spider中的仿浏览器抓取(User-Agent)

      有些网站为了防止spider对客户信息的抓取或者抓取一些信息被他人所利用,对访问网站进行了一定的限制,但这些网页可以通过浏览器正常访问,因此,我们通过把spider伪装成浏览器对网页进行抓取,这些步骤通过在urlopen(url,headers)中添加headers来完成。

1.通过spider打开一个csdn博主的主页,会发现状态码返回403,这就说明这个博客网页加了限制。

    我们先通过Google的chrome浏览器打开这个csdn博客(http://blog.csdn.net/jizhen_tan/article/details/51661203),再通过F12打开抓包工具,找到network这一选项栏再刷新网页,就会发现这些东西:

spider中的仿浏览器抓取(User-Agent)_第1张图片

     我们点开第一个Name51661203,会在headers中发现有三个元素:General、Response Headers、Requset Headers。我们要做的是模仿Requset Headers中的写法来把spider伪装成浏览器对网页进行访问。


2.这次用到的库为urllib2,它是urllib的扩展。

spider中的仿浏览器抓取(User-Agent)_第2张图片

在headers中主要添加四个元素:User-Agent、Host、GET,这些都可以在Requset Headers中找到。headers是一个字典型。



3.一些网站会对User-Agent进行检测,如果一个时间段内过多的访问就会遭到封IP,因此我们可以通过随机变换User-Agent来进行访问:

这是搜索到的一些User-Agent:爬虫User-Agent收录

通过一个循环来实现:

spider中的仿浏览器抓取(User-Agent)_第3张图片

你可能感兴趣的:(spider中的仿浏览器抓取(User-Agent))