python网络数据采集-处理登录和cookie
来源:互联网 发布:淘宝客服技巧用语 编辑:程序博客网 时间:2024/05/22 17:36
第一部分:基础概念
到次为止,我们介绍过大部分表单都允许你想网站提交信息,或者让你在提交表单后立即看到想要的页面信息,那么,这些表单和登录表单(当你浏览网站时让你保持“已登录”状态)有什么不同?
大多数新式的网站都用cookie跟踪用户是否已登录的状态信息。一旦网站验证了你的登录权证,它就会将它们保存在你的浏览器的cookie中,里面通常包含一些服务器生成的令牌、登录有效时限和状态跟踪信息。网站会把这个cookie当做信息验证的证据,在你浏览网站的每个页面时出示给服务器。在20世纪90年代中期广泛使用cookie之前,保证用户安全验证并跟踪用户是网站上的一大问题。
虽然cookie为网络开发者解决了大问题,但同时却为网络爬虫带来了重大问题。你可以一整天只提交一次登录表单,但是如果你没有一直关注表单传回给你的那个cookie,那么一段时间以后再次访问新页面时,你的登录状态就会丢失,需要重新登录。
第二部分:实战
2.1 登录测试:
在http://pythonscraping.com/pages/cookies/login.html有一个简单的登录表单(用户名可以是任意值,但是密码必须是“password”) 。这个表单在http://pythonscraping.com/pages/cookies/welcome.php处理,里面包含一个简介页面http://pythonscraping.com/pages/cookies/profile.php。
如果你在登录会签想要进入欢迎界面或简介界面,会看到一个错误信息和访问前请先登录的指令。在界面页面中,网站会检测浏览器的cookie,看它有没有页面已经登录的设置信息:
用Requests库跟踪cookie同样很简单:
import requestsparams={'username':'Peter','password':'password'}r=requests.post("http://pythonscraping.com/pages/cookies/welcome.php",params)print("Cookie is set to:")print(r.cookies.get_dict())print("....a......")print("Going to profile page ...")r=requests.get("http://pythonscraping.com/pages/cookies/profile.php",cookies=r.cookies)print(r.text)
与浏览器执行结果一致。
2.2 复杂网站处理方式
对于简单的网站,一般上面的方法就可以使用了,但是如果你面对的是一个比较复杂的网站,它经常暗自调整cookie,或者如果你从一开始就完全不想要用cookie,该怎么处理呢?Requests库的session函数可以完美地解决这些问题:
import requestssession=requests.Session()params={'username':'Peter','password':'password'}s=session.post('http://pythonscraping.com/pages/cookies/welcome.php',params)print("Cookie is set to:")print(s.cookies.get_dict())print("..........")print("Going to porfile page...")s=session.get("http://pythonscraping.com/pages/cookies/profile.php")print(s.text)
第三部分:小结
Requests库是一个非常给力的库,程序员完全不用费脑子,也不用写代码,可能只逊色与Selenium.虽然写网络爬虫的时候,你可能想放手让Requests库替自己做事情,但是持续关注cookie的状态,掌握它们可以控制的范围是非常重要的,这样可以避免痛苦地调试和追寻网站异常行为,节省很多时间。
- python网络数据采集-处理登录和cookie
- python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- python网络数据采集-处理重定向问题
- python网络数据采集-处理格式规范的文字
- [Python]网络数据采集概述(3)—穿越网页表单、登录窗口进行采集
- node 数据采集-cookie处理,图片验证
- Python网络数据采集(1)
- Python网络数据采集-BeautifulSoup
- 大数据前景分析:Hadoop将被Spark替代?
- MySQL的增删改查
- Hive 根据身份证规则从身份证号提取年龄和性别
- Python 基础第一阶段笔记(一)
- Spring-Cloud 服务注册与发现 Eureka
- python网络数据采集-处理登录和cookie
- google 翻译
- Android原生AlertDialog修改标题,内容,按钮颜色,字体大小等
- Apache 编译安装
- RMYSQL连接乱码问题
- Android零基础入门第81节:Activity数据传递
- JavaScript绘制环形回路图形
- 文字如何实现完美UI?文本排版设计告诉你
- 正态分布/卡方分布/F分布/T分布/泊松分布