python爬虫4.1模拟登录古诗词网并通过Cookie处理获取个人信息

1.前言

好久没有写过笔记了....本来这节内容是模拟登录人人网,但是人人网现在无法注册了...就换了家网站。这个代码是可以模拟登录古诗词网,进入登录成功后跳转的页面后,再进入个人收藏界面,获取个人收藏信息。

2.学习内容

首先编码流程分为三部 #1.验证码的识别 ,获取验证码图片的文字数据 #2.对post请求进行发动(处理请求参数) #3.对响应数据进行持久化存储

 import requests
 from lxml import etree
 from chaojiying import Chaojiying_Client

先导包,注意chaojiying模块的导入方法!从chaojiying文件(模块)中导入Chaojiying_Client这个类。

第一步,获取登录页面的所有信息

 url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx''
 headers = {
         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3877.400 QQBrowser/10.8.4508.400'
                 }
 page_text=requests.get(url=url,headers=headers).text

第二步,使用xpath方法提取图片xpath路径,直接点击右键即可获取

 tree=etree.HTML(page_text)
 try:#把这个解决列表返回空值与调用自己模块的方法记下来!!!以及try中包含的内容,否则会找不到变量
  code_img_src='https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')[0]
     code_img_data=requests.get(url=code_img_src,headers=headers).content
     with open('./code.jpg','wb') as fp:
         fp.write(code_img_data)
 except IndexError:
     pass

这里有个小bug,当我不使用try与except时,line3列表总是显示超出索引,获取不到值,所以直接except掉就行。

到这里已经获取到了验证码信息,接下来就是使用超级鹰识别验证码。

 #使用超级鹰的示例代码进行图片识别
 if __name__ == '__main__':
    chaojiying = Chaojiying_Client('账号', '密码, 'ID') #用户中心>>软件ID 生成一个替换 96001
    im = open('./code.jpg', 'rb').read()                                    #本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
    print(chaojiying.PostPic(im, 1902))

注意要观察自己的验证码代号是什么,并去解码网站寻找相应验证码类型号

接下来就是模拟登录古诗词网,古诗词网的请求为get请求,不需要封装参数。但是有的网站为post请求,需要封装参数。我先介绍post的请求的情况

 #post请求的发送(模拟登录)
 #login_url='code_img_src='https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')[0]'
 #data={
     #'user': '账号',
     #'pass': '密码',
     #'imgtxt': 'chaojiying.PostPic(im, 1902)',
     #'act': '1',
 #}
 ​

注意此处的url为登录界面的url,post请求带参数,要参数封装。、

下面是get请求的

 response=requsets.get(url=login_url,headers=headers)
 print(response.status_code)#验证是否请求成功,若为200,则请求成功,

可以先打印一下(response.status_code),若为200,则表示登陆成功。

最后将获取到的数据显示到html文档中

 login_page_text=response.text
 with open('renren.html','w',encoding='utf-8') as fp:
     fp.write(login_page_text)

这时候就登录成功了,进入了登录后的界面,但是我们的目的是再进入个人收藏界面获取个人收藏信息。所以应该先获取个人收藏页面的url,再对其发请求就行了。但是直接这样写会发生错误,因为服务器不知道我们是登录成功后才对个人收藏页面发起的请求。所以此次结果会直接获取的是登录界面的数据。这时候就需要cookie了!它是在登录成功后才有的,我们通过在个人收藏页面f12获取cookie,并将其封装到headers中,这样,再对个人收藏页面发送请求,服务器就知道我们是登陆成功后才获取的个人收藏信息啦

有两种cookie处理方式,手动与自动

先介绍手动方式。

先封装cookie,此处的cookie是个人收藏页面的cookie

 # headers={
 #     'Cookie':'xx'
 # }

在对其访问以及持久化存储

detail_page_text=requsets.get(url=detail_url,headers=headers).text
with open('bobo.html','w',encoding='utf-8') as fp:
    fp.write(detail_page_text)

这样就完成了!可以发现比较麻烦,还要手动去粘贴cookie,并且有的网站cookie值是有 有效期的。比较不方便,推荐使用自动方式。

再介绍自动方式

这时候引入了一个session函数,该函数可以进行请求发送,并且可以自动获取cookies。

先创建一个session对象

session=requests.Session()

然后使用携带cookies的session进行get请求的发送就行了(把requests改成session)。

但是自动方式我没跑成功,返回的界面还是登录界面....这是为啥?

3.结束语

从今天起,我要每天指定学习任务,要不然坐那半天没有纲领指导哈哈哈哈哈哈。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫是一种按照一定规则,自动抓取万维信息的程序或者脚本。它可以通过定义好的规则,自动抓取络上的信息,并对抓取下来的数据进行筛选和提取,从而获得我们需要的信息。爬虫并不是Python的专利,使用其他编程语言也可以实现爬虫功能,但Python提供了许多方便的库,使得开发爬虫变得更加简单。\[1\] 在爬取古诗词的例子中,使用了Python的requests库和BeautifulSoup库来进行页请求和解析。首先,通过发送HTTP请求获取页的HTML内容,然后使用BeautifulSoup库对HTML进行解析,提取出需要的信息,如标题、朝代、作者和内容。最后,将提取的信息存储到一个列表中,并将列表写入一个JSON文件中。\[2\] 另外,还可以使用XPath解析HTML内容。XPath是一种用于在XML和HTML文档中进行导航和提取信息的语言。在这个例子中,使用了Python的requests库和lxml库来进行页请求和解析。通过XPath表达式,可以直接定位到需要的元素,并提取出相应的信息,然后将提取的信息存储到一个列表中,并将列表写入一个JSON文件中。\[3\] 总结来说,Python爬虫可以通过发送HTTP请求获取页内容,然后使用相应的库对页进行解析,提取出需要的信息,并进行存储和处理。这样就可以实现对古诗词或其他站的信息进行爬取。 #### 引用[.reference_title] - *1* [Python爬虫(一)——爬取古诗文,初识什么是爬虫](https://blog.csdn.net/u014663232/article/details/103459450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python爬虫入门_3种方法爬取古诗文站](https://blog.csdn.net/purvispanwu/article/details/106849214)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值