python爬虫 模拟登陆

本文介绍了在学习Python爬虫过程中遇到的模拟登录问题,特别是针对存在统一身份认证界面的网站。通过分析登录时的数据交换,找到真实的提交表单网址,并利用urllib2库的cookie功能解决验证码获取,同时处理登录过程中的重定向问题。
摘要由CSDN通过智能技术生成

最近在学习python爬虫,前几天接触到模拟登陆这一块,其实之前就有接触过,但时间有点久远就遗忘了。在看了汪海的[Python]网络爬虫(十):一个爬虫的诞生全过程(以山东大学绩点运算为例)这篇文章后,尝试模拟登录自己学校的网站获取信息,但在登录这一块就卡壳了。

说明一下学校登录界面的情况。当需要进入个人信息的时候,比如图书馆、选课等,都会进入到一个专门的统一身份认证的界面,如图1所示。

图1

图1 统一身份认证界面

可以从图中看出,这儿的登录需要验证码,这就需要确保在模拟登陆时候获取的验证码一定和获取当前页面的验证码一致。 另外,这个验证码是动态生成的,所以没有办法在请求页面之后将获取到的页面内容进行解析获取验证码的网址。

图2给出的登录时所捕获到的数据。(Firefox + httpfox插件,目前感觉比chrome自带的审查元素要好用点)

图2

图2 登录时所捕获的数据

可以从图2看出,在登录提交表单(提交用户名、密码等信息&

模拟登录是指通过编写程序来模拟手动输入账号密码的过程,以获取登录成功后的cookie,从而可以直接访问需要登录才能进入的页面,并获取所需的数据。在Python中,可以使用第三方库如requests和urllib来实现模拟登录。 使用requests库进行模拟登录的步骤如下: 1. 导入必要的库:import requests 2. 创建一个Session对象:session = requests.Session() 3. 发送GET请求获取登录页面:wb_data = session.get(url).text 4. 解析页面,获取登录表单中的_xsrf参数和其他必要的参数:soup = BeautifulSoup(wb_data, 'lxml'),xsrf = soup.select('input\[value\]')\[-1\].get('value') 5. 构造登录表单数据:data = {'_xsrf': xsrf, 'password': 'your password', 'remember_me': 'true', 'email': 'your email'} 6. 提交登录表单:log_post = session.post('http://www.zhihu.com/login/email', data=data) 7. 验证是否成功登录:test = session.get(url),wb_data = BeautifulSoup(test.text, 'lxml'),wb_data.select('#feed-0 > div.feed-item-inner > div.feed-main > div.feed-content > h2 > a') 另外,还可以使用urllib库来模拟登录,通过保存cookie来保持登录状态。具体步骤如下: 1. 导入必要的库:import http.cookiejar, urllib.request 2. 初始化cookie和opener:cookie = http.cookiejar.CookieJar(),opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie)) 3. 配置opener为全局:urllib.request.install_opener(opener) 4. 构造请求头和请求对象:headers = {},request = urllib.request.Request(url, headers=headers) 5. 发送请求并保存cookie:response = urllib.request.urlopen(request) 以上是使用Python进行模拟登录的基本步骤,具体的实践可以根据不同的网站和需求进行相应的调整和修改。 #### 引用[.reference_title] - *1* [python爬虫模拟登录](https://blog.csdn.net/qimo__/article/details/130450046)[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^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python爬虫基础-模拟登陆](https://blog.csdn.net/weixin_34396103/article/details/89616422)[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^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python爬虫——模拟登陆](https://blog.csdn.net/qq_16121469/article/details/127718925)[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^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值