Python 爬虫心得

最近我写的爬虫在爬取数据的时候变得不太好用了,两三天前还是可以正常爬取数据的,今天运行的时候返回了空值。我打开源代码,将抓取的网页内容print出来看了一下,发现返回了这样一个网页:

<html style="height:100%">
	<head>
		<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
		<meta name="format-detection" content="telephone=no">
		<meta name="viewport" content="initial-scale=1.0">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	</head>
	<body style="margin:0px;height:100%">
		<iframe src="/_Incapsula_Resource?SWUDNSAI=9&xinfo=14-73717949-0%202CNN%20RT%281531788981588%200%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B12%288%2c881023%2c0%29&incident_id=810000430074365444-466505767058014910&edet=12&cinfo=08000000" frameborder=0 width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 810000430074365444-466505767058014910</iframe>
	</body>
</html>
				
<iframe src="/_Incapsula_Resource?SWUDNSAI=9&xinfo=14-73717949-0%202CNN%20RT%281531788981588%200%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B12%288%2c881023%2c0%29&incident_id=810000430074365444-466505767058014910&edet=12&cinfo=08000000" frameborder=0 width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 810000430074365444-466505767058014910</iframe>

“Request unsuccessful”,这个请求没有成功......;我注意到返回的这个HTML的头文件中有一个<meta>属性中出现了robots的字样,

<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

以前没有见过这个属性,因此觉得问题的突破口可能就是这个,上网百度之后发现,NAME=ROBOTS和content=“noidex,nofollow”这两个attribute就是用来屏蔽网络爬虫的。因为我的爬虫程序比较简单,在使用requests.get()的方法时并没有发送headers过去,因此被网站认为是网络机器人(网络爬虫),限制了我的程序对网站的访问。

知道了问题的原因,接下来就容易多了;打开Chrome,F12打开开发者工具,在Chrome地址栏输入要爬取的网址,然后如下图所示,找到网页主体内容:

我这里抓取的网页主体是一个HTML文件,所以点击这个HTML文件,右侧栏就会出现这个请求的详细信息,这里我需要用到request headers里面的信息;既然网站将我们判定为机器人,那我们就将程序模拟人的操作,这时候headers就派上用场了。

        一般情况下,只需要将User-Agent的信息传递过去就可以了,但是对于一些验证比较严格的网站,可能需要的信息就要多了;这个时候,我们就将request headers里面的请求头一个一个传进去试一下。

       我这里最开始的时候只传Referer和User-Agent进去的时候就可以正常取回数据了,可当我第二次运行的时候,就又返回了request unsuccessful,最后我将cookie传进去之后就没啥问题了。但是我这里传递的cookie是固定的,不具有普适性,后续有空了会再更新这篇博客。

猜你喜欢

转载自blog.csdn.net/u012159933/article/details/81076395