安
装
Requests
可在模块的网站上找到下载链接
(http://docs.python-requests.org/en/latest/user/install/)和安装方法,或者用任意第三方Python模
块安装器进行安装。
请求头可以通过requests模块进行自定义。https://www.whatismybrowser.com/网站就是一个非常棒的
网站,可以让服务器测试浏览器的属性。我们用下面的程序来采集这个网站的信息,验证我们浏览器的
cookie设置:
程序输出结果中的请求头应该和程序中设置的headers是一样的。
虽然网站可能会对HTTP请求头的每个属性进行“是否具有人性”的检查,但是我发现通常真正重要的参数
就是User-Agent。无论做什么项目,一定要记得把User-Agent属性设置成不容易引起怀疑的内容,不要
用Python-urllib/3.4。另外,如果你正在处理一个警觉性非常高的网站,就要注意那些经常用却很少检查
的请求头,比如Accept-Language属性,也许它正是那个网站判断你是个人类访问者的关键。
请
求
头
会
改
变
你
观
看网络
世
界的
方
式
假
设
你
想
为
一
个
机
器
学
习
的研究
项
目
写
一
个
语言
翻
译
机
,
却
没
有
大
量
的翻
译
文本来
测
试
它
的
效果
。
很
多大型
网站
都
会为
同
样
的
内
容
提
供不
同
的
语言
翻
译
,
根
据
请
求
头
的
参
数
响
应
网站
不
同
的
语言
版
本
。
因
此
,
你
只
要
简
单地
把
请
求
头
属性
从
Accept-Language:en-US
修
改
成
Accept-Language:fr
,
就
可
以从
网站
上
获
得
“
Bonjour
”
(
法
语
,
你
好
)
这
些
数据来改
善
翻
译
机
的翻
译
效果
了
(
大型
跨
国
企业
通
常
都
是
好
的
采集
对
象
)
。
请
求
头
还
可
以
让
网站
改
变
内
容
的
布局
样
式
。
例
如
,
用移
动
设
备
浏
览
网站
时
,
通
常
会
看
到
一
个
没
有
广
告
、
Flash
以
及
其他
干
扰
的简
化
的网站
版
本
。
因
此
,
把
你
的
请
求
头
User-Agent
改
成
下
面这
样
,
就
可
以
看
到
一
个
更
容
易
采集
的网站
了
!
User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 712 like Mac OS X) App
leWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53
2. 设置cookie的学问
虽然cookie是一把双刃剑,但正确地处理cookie可以避免许多采集问题。网站会用cookie跟踪你的访问过
程,如果发现了爬虫异常行为就会中断你的访问,比如特别快速地填写表单,或者浏览大量页面。虽然这
些行为可以通过关闭并重新连接或者改变IP地址来伪装,但是如果cookie暴露了你的身份,再多努力也是
白费。
在采集一些网站时cookie是不可或缺的。要在一个网站上持续保持登录状态,需要在多个页面中保存一个
cookie。有些网站不要求在每次登录时都获得一个新cookie,只要保存一个旧的“已登录”的cookie就可
以访问。
如果你在采集一个或者几个目标网站,建议你检查这些网站生成的cookie,然后想想哪一个cookie是爬虫
需 要 处 理 的 。 有 一 些 浏 览 器 插 件 可 以 为 你 显 示 访 问 网 站 和 离 开 网 站 时 cookie 是 如 何 设 置 的 。
EditThisCookie(http://www.editthiscookie.com/)是我最喜欢的Chrome浏览器插件之一。
因为requests模块不能执行JavaScript,所以它不能处理很多新式的跟踪软件生成的cookie,比如
GoogleAnalytics,只有当客户端脚本执行后才设置cookie(或者在用户浏览页面时基于网页事件产生
cookie,比如点击按钮)。要处理这些动作,需要用Selenium和PhantomJS包。