当前位置: 首页 > 科技观察

Python爬虫:教你如何采集和登录看数据

时间:2023-03-13 19:31:18 科技观察

在采集网站的过程中,一些数据价值高的网站会限制访问者的访问行为。此时建议通过登录获取目标网站的cookie,然后利用cookie配合代理IP进行数据采集和分析。1使用表单登录是post请求,即先将表单数据发送给服务器,服务器将返回的cookie保存在本地。#!-*-encoding:utf-8-*-importrequestsimportrandomimportrequests.adapters#访问的目标页面targetUrlList=["https://httpbin.org/ip","https://httpbin.org/headers","https://httpbin.org/user-agent",]#代理服务器(产品官网www.16yun.cn)proxyHost="t.16yun.cn"proxyPort="31111"#代理隧道验证信息proxyUser="用户名"proxyPass="password"proxyMeta="http://%(user)s:%(pass)s@%(host)s:%(port)s"%{"host":proxyHost,"port":proxyPort,"user":proxyUser,"pass":proxyPass,}#设置http和https访问都使用HTTP代理proxies={"http":proxyMeta,"https":proxyMeta,}#访问三个网站,使用同一个Session(keep-alive),可以保持同一个外网IPs=requests.session()#setcookiecookie_dict={"JSESSION":"123456789"}cookies=requests.utils.cookiejar_from_dict(cookie_dict,cookiejar=None,overwrite=True)s.cookies=cookiesforiinrange(3):forurlintargetUrlList:r=s.get(url,proxies=proxies)printr.text2使用cookie登录使用cookie登录,服务器会认为你是登录用户,所以会返回给你一个登录内容。所以,如果需要验证码,可以使用带验证码的cookie登录。requests_session.get(url_login)#我已经登录了,因为我之前拿到了ResponseCookie!response3=requests_session.get(url_results)#我已经登录了,因为我之前拿到了ResponseCookie!如果有验证码,此时使用response=requests_session.post(url=url_login,data=data)是不行的。方法应该是这样的:response_captcha=requests_session.get(url=url_login,cookies=cookies)response1=requests.get(url_login)#Notloggedinresponse2=requests_session.get(url_login)#Alreadyloggedin,因为我得到了ResponseCookie之前!response3=requests_session.get(url_results)#我已经登录了,因为我之前拿到了ResponseCookie!【编辑推荐】TIOBE11月榜单:Python挤掉Java!React并发模式三元组:what/why/howtodoLinux高性能网络编程TCP连接内存使用Python曾经是程序员的“瑞士军刀”,现在正在慢慢被取代全球疫情下的网络安全:警惕“拿趁火打劫”网络攻击