在爬虫的时候,遇到403禁止爬取错误时候的做法:
1、一个网站下面的robots.txt,上面记录了很多禁止爬虫的信息
Urllib2:一个有更多功能的爬虫模块
在浏览器中利用审查元素这个功能,刷新查看network标签内的内容。查看每个网页在网络上的状态,status部分是也就是每个网页的状态码部分,就是getcode()得到的那个数值。
其中选择某个状态码为200的这个网页,里面的headers信息中的headers response会为你提供一些服务器的头部信息,也就是用info方法获得的那些信息。 由于一些网站会屏蔽掉我们的爬虫程序,那么我们就用模拟用户行为的方式来进行爬取数据。
其中req = urllib2.Request(url)这个方法会创建一个对象并且会获得headers标签中request headers的一些信息,这些信息也就用户申请访问这个页面的一些信息。如访问页面的服务器地址,用户的一些硬件信息,以及通过哪些之前的页面也访问到当前这个页面的信息。
request返回的这个对象有一个add_header方法。
req.add_header('"","")
-
Request URL:
http://blog.csdn.net/sxb0841901116/article/details/23305801
-
Request Method:
GET
-
Status Code:
200 OK
这里是某一个页面的Request header里面的信息,我们要用add_header这个方法把GET,HOST,Referer以及user-agent这四个标签所对应的值都添加到request返回的那个对象里面,以元组参数的方式,之后用urlopen的方法打开request返回的对象,并且read读取,就可以模仿用户的行为去爬取网页上面的数据。
在给add_headers传递参数的时候,因为一共有四个标签的键值对要传入,一行一行的重复代码显得过于啰嗦,我们可以直接把上面的四个键值对做成一个字典,之后在创建Request对象的时候把这个字典当做参数穿给Request函数参数列表中的headers参数即可。这样的话就可以不用add_headers方法了。
如果要重复多次的访问一个页面的话,那么就要user-agent有多个信息,用多个虚假的头部信息可以多次访问一个网站。