爬爬爬——qq模拟登录,古诗文网模拟登录并爬取内容(cookie)

cookie——可以理解为,记录为登录状态。如果在登录一个网站之后,想拿到信息发现404了,就是没有加cookie在这个header里。

下图加了cookie和没有加的对比(我是用了selenuim自动化登录的):

下面是加了的

这个就进入了。


下面是古诗文网的登录和获取。

import time

import ddddocr
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By

zhanghao = "19894604325"
mima = "lxh258258"
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'

wd = webdriver.Edge()
wd.implicitly_wait(10)

wd.get(url)
time.sleep(1)

wd.find_element(By.CSS_SELECTOR,'#email').send_keys(f'{zhanghao}')
wd.find_element(By.CSS_SELECTOR,'#pwd').send_keys(f'{mima}')

#验证码
img = wd.find_element(By.CSS_SELECTOR,'#imgCode')
#img.screenshot_as_png
with open('gushiwen.png',mode='wb') as f:
    f.write(img.screenshot_as_png)
#分析数据
ocr = ddddocr.DdddOcr() #ocr实例对象
code_text = ocr.classification(img.screenshot_as_png)

wd.find_element(By.CSS_SELECTOR,'#code').send_keys(f"{code_text}")
wd.find_element(By.CSS_SELECTOR,'#denglu').click()
time.sleep(6)
#爬取
url2 = 'https://so.gushiwen.cn/user/collect.aspx'
headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0',
'Cookie':
'login=flase; ticketStr=202945020%7cgQEZ8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyUFlublFubGVkN2kxLTlpUE5CMTMAAgSJRcxlAwQAjScA; ASP.NET_SessionId=o42gt4a0v1fyinfcy1y4w0k5; codeyzgswso=6501cb6880be4877; gsw2017user=5612449%7cCB284E64EB2D7536EBF09392CC9AE0CF%7c2000%2f1%2f1%7c2000%2f1%2f1; login=flase; wxopenid=defoaltid; gswZhanghao=19894604325; gswPhone=19894604325; idsShiwen2017=%2c102533%2c109816%2c53504%2c12578%2c'


}
response = requests.get(url2,headers=headers).text
with open('guhsi.html','w',encoding='utf-8') as fp:
    fp.write(response)
elem = wd.find_element(By.CSS_SELECTOR,'a[style=" float:left;"]')
print(f"\n{elem.text}")

wd.quit()

这里值得一提的,写入文件的方式。

1.我以前使用,这个形式。上面的和这个不同,总结一下,上面的更容易记忆,但都一样。

f = open('文件名.txt', mode='a', encoding='utf-8')
        f.write(Mcontent)

2.验证码部分用了ddddcor

#验证码
img = wd.find_element(By.CSS_SELECTOR,'#imgCode')
#img.screenshot_as_png
with open('gushiwen.png',mode='wb') as f:
    f.write(img.screenshot_as_png)
#分析数据
ocr = ddddocr.DdddOcr() #ocr实例对象
code_text = ocr.classification(img.screenshot_as_png)

将图片储存然后识别 


============qq登录==========不完善

到最后还有手机号验证码,给我搞懵了----------------------验证码还是用“云打码”(我不会用嘿嘿嘿!以后在仔细研究一下)

import time
import ddddocr
from selenium import webdriver
from selenium.webdriver.common.by import By

num = '2488220557'
password = ' '
url = 'https://www.baidu.com/'

wd = webdriver.Edge()
#饶过检测
wd.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                   {"source":"""Object.defineProperty(navigator,'webdriver',{get:()=>undefined})"""})
wd.implicitly_wait(5)

wd.get(url)

mainWindow = wd.current_window_handle
#wd.switch_to.window(mainWindow)
element = wd.find_element(By.CSS_SELECTOR,'#kw')
time.sleep(1)
element.send_keys('qq\n')

element2 = wd.find_element(By.CSS_SELECTOR,'.c-container')
element3 = element2.find_element(By.CSS_SELECTOR,'a[target="_blank"]').click()
time.sleep(2)

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    print(wd.title)
    if '轻松' in wd.title:
        break

elements = wd.find_element(By.NAME,'im.qq.com.login')
elements.click()
time.sleep(1)

wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'iframe[name="frame-login"]'))
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#switcher_plogin').click()
time.sleep(1)
element4 = wd.find_element(By.CSS_SELECTOR,'#u').send_keys(f'{num}')
element5 = wd.find_element(By.CSS_SELECTOR,'#p').send_keys(f'{password}')
time.sleep(2)
wd.find_element(By.CSS_SELECTOR,'#login_button').click()
time.sleep(100)

 1.

2.

3.

4.

5.

注意这里切换了frame


这里用了这几天学到基本所有,因为CSS的强大所以,就全用了CSS。

1.这是一个绕过检测的代码,可以没有用,可以不用写(等待返回要写哦)

#饶过检测
wd.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                   {"source":"""Object.defineProperty(navigator,'webdriver',{get:()=>undefined})"""})
wd.implicitly_wait(5)

2.发起请求,并切储存当前窗口(没啥意义,就是为了复习知识点)

wd.get(url)

mainWindow = wd.current_window_handle

3.这个特别值得说:

浏览器切换窗口,你看到切换了但是这个‘wd’是没有切换到,你看到的这个网页的,所以要切换,注意!!!!!!!!!!!!!!!!!!!!!!

如果你觉得你得的没有问题,看是不是浏览器窗口没切换,还是frame窗口没切换!!!

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    print(wd.title)
    if '轻松' in wd.title:
        break

4.切换为frame窗口(注意!!!)

wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'iframe[name="frame-login"]'))
time.sleep(1)

没啥了,就是验证码了,b站有好多视频,其实只要找‘云打码’这个网站怎么用,就行。这个平台很全面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/387541.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】指针的入门篇2,深入理解指针和数组的关系

欢迎来CILMY23的博客喔,本期系列为【C语言】指针的入门篇2,深入理解指针和数组的关系,图文讲解指针和数组关系的知识,带大家理解指针和数组的关系,以及指针数组的用法,感谢观看,支持的可以给个赞…

书生浦语大模型实战营-课程笔记(2)

介绍了一下InternLm的总体情况。 InternLm是训练框架,Lagent是智能体框架。 这个预训练需要这么多算力,大模型确实花钱。 Lagent是智能体框架,相当于LLM的应用。 pip设置 开发机的配置 pip install transformers4.33.1 timm0.4.12 sente…

数据结构——5.5 树与二叉树的应用

5.5 树与二叉树的应用 概念 结点的权:大小可以表示结点的重要性 结点的带权路径长度:从树的根到该结,的路径长度(经过的边数)与该结点权的乘积 树的带权路径长度:树中所有叶结点的带权路径长度之和(WPL) …

C语言函数(四):递归

目录 1.什么是递归2.递归的限制条件3.递归举例3.1 举例一:求n的阶乘 4.递归与迭代4.1 求第n个斐波那契数 5.递归与循环的选择 1.什么是递归 在学习函数这一章节,递归是每个计算机语言绕不开的知识点,那什么是递归呢? 递归就是一种…

Java入门高频考查基础知识9(银盛15问万字参考答案)

JAVA刷题专栏:http://t.csdnimg.cn/9qscL 目录 一、Springcloud的工作原理 三、注册中心心跳是几秒 四、消费者是如何发现服务提供者的 五、多个消费者调⽤用同⼀接口,eruka默认的分配⽅式是什么 六、springboot常用注解,及其实现 七、…

【C语言】指针的入门篇,深入理解指针和指针变量

欢迎来sobercq的博客喔,本期系列为【C语言】指针的入门篇,深入理解指针和指针变量 图文讲解指针的知识,带大家理解指针和内存的关系,以及指针的用法,感谢观看,支持的可以给个赞哇。 目录 一、内存和地址 二…

【使用IDEA总结】01——新增作者信息、方法参数返回值

[TOC](目录) 1.类新增作者信息 打开IDEA的Settings,Editor->Code Style->File and Code Templates->Includes->File Header,输入以下作者信息,作者名更换为自己的即可,操作如下图所示 /*** Author Linhaipeng* Date…

实现表达式语言

实现表达式语言 考虑使用大量Scriplet代码嵌入Java代码的JSP页面。过度使用Scriptlet代码使JSP页面变得混乱。因此。开发人员难以阅读和调试页面。另外,网页设计师在编辑表示代码时也会遇到问题。为了解决此类问题,开发无脚本的JSP页面受到推崇。 无脚本的代码使JSP页面易于…

Uipath 实现Excel 文件合并

场景描述 某文件夹下有多个相同结构(标题列相同)的Excel 文件,需实现汇总到一个Excel文件。 常见场景有销售明细汇总,订单汇总等。 解决方案 对于非IT 人员则可使用Uipath 新式Excel活动,通过拖拉实现。也可以通过内存表或使用VB脚本&…

【动态规划初识】不同路径问题

每日一道算法题之不同路径问题 一、题目描述二、思路三、C++代码一、题目描述 题目来源:LeetCode 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finis…

CTFshow web(php文件上传155-158)

web155 老样子,还是那个后端检测。 知识点: auto_append_file 是 PHP 配置选项之一,在 PHP 脚本执行结束后自动追加执行指定的文件。 当 auto_append_file 配置被设置为一个文件路径时,PHP 将在执行完脚本文件的所有代码后&…

opencv通道分离与合并

void QuickDemo::channels_demo(Mat & image) {std::vector<Mat>mv;//通道分离合并split(image,mv);//原图 指针(Mat)imshow("蓝色", mv[0]);imshow("绿色", mv[1]);imshow("红色", mv[2]); } split(image,mv);//原图 指针(Mat) 这里…

华为OD机试 - 分配土地( Python C C++ JavaGo JS PHP)

题目描述 从前有个村庄&#xff0c;村民们在各种田地上插上小旗子&#xff0c;每个旗子上都标识了一个数字。现在&#xff0c;村民们想要找出一个包含相同数字的最小矩形区域&#xff0c;并将这块土地分配给对村庄做出巨大贡献的村民。我们需要找出这个矩形区域的最大面积。 …

网络原理(3)--以太网协议,DNS

&#x1f495;"Echo"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;网络原理(3)–以太网协议,DNS 在网络原理(2)中介绍了网络层中的一个重要的协议–ip协议,网络层关注的通信时的起点和终点,而数据链路层更加"底层"一些,关注的是传输过程…

嵌入式软件设计入门:从零开始学习嵌入式软件设计

&#xff08;本文为简单介绍&#xff0c;个人观点仅供参考&#xff09; 首先,让我们了解一下嵌入式软件的定义。嵌入式软件是指运行在嵌入式系统中的特定用途软件,它通常被用来控制硬件设备、处理实时数据和实现特定功能。与桌面应用程序相比,嵌入式软件需要具备更高的实时性、…

第13讲创建图文投票

创建图文投票实现 图文投票和文字投票基本一样&#xff0c;就是在投票选项里面&#xff0c;多了一个选项图片&#xff1b;、 <view class"option_item" v-for"(item,index) in options" :key"item.id"><view class"option_input&…

MATLAB知识点:randsample函数(★★★☆☆)生成随机样本的函数,可指定有放回和无放回随机抽样

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章&#xff1a;课后习题讲解中拓展的函数 在讲解第三…

机器学习:Pooling层作用及反向传播

CNN网络在反向传播中需要逐层向前求梯度&#xff0c;然而pooling层没有可学习的参数&#xff0c;那它是如何进行反向传播的呢&#xff1f;此外&#xff0c;CNN中为什么要加pooling层&#xff0c;它的作用是什么&#xff1f; Pooling层 CNN一般采用average pooling或max pooli…

【STM32 CubeMX】GPIO_HAL库源码分析

文章目录 前言一、GPIO_HAL库源码分析1.1 初始化GPIO1.2 HAL_GPIO_Init源码分析GPIO_InitTypeDef初始化结构体HAL_GPIO_Init函数 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技…

判断一个时间序列中的元素是否属于一个月的第一天或最后一天

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断一个时间序列中的元素 是否属于一个月的第一天或最后一天 Series.dt.is_month_start Series.dt.is_month_end [太阳]选择题 以下代码的输出结果中正确的是? import pandas as pd ts pd.S…