有些网站为了防止spider对客户信息的抓取或者抓取一些信息被他人所利用,对访问网站进行了一定的限制,但这些网页可以通过浏览器正常访问,因此,我们通过把spider伪装成浏览器对网页进行抓取,这些步骤通过在urlopen(url,headers)中添加headers来完成。
1.通过spider打开一个csdn博主的主页,会发现状态码返回403,这就说明这个博客网页加了限制。
我们先通过Google的chrome浏览器打开这个csdn博客(http://blog.csdn.net/jizhen_tan/article/details/51661203),再通过F12打开抓包工具,找到network这一选项栏再刷新网页,就会发现这些东西:
我们点开第一个Name51661203,会在headers中发现有三个元素:General、Response Headers、Requset Headers。我们要做的是模仿Requset Headers中的写法来把spider伪装成浏览器对网页进行访问。
2.这次用到的库为urllib2,它是urllib的扩展。
在headers中主要添加四个元素:User-Agent、Host、GET,这些都可以在Requset Headers中找到。headers是一个字典型。
3.一些网站会对User-Agent进行检测,如果一个时间段内过多的访问就会遭到封IP,因此我们可以通过随机变换User-Agent来进行访问:
这是搜索到的一些User-Agent:爬虫User-Agent收录
通过一个循环来实现: