原来写的一些爬虫相对简单粗暴,爬取的数据量也不大;如果需要爬取的数据量较大,爬取网站时间较长,就需要一些配置来伪装我们的爬虫了。
忽略robots协议
有时候爬取不到网站数据,有可能是网站robots协议禁止爬虫访问了,比如淘宝网,这就需要爬虫忽略robots协议。在settings.py内添加如下代码:
ROBOTSTXT_OBEY = False
设置爬取每条数据时间
长时间爬取网站时,如果不设置爬虫爬取速度,很容易被服务器识别并误认为我们是在恶意进行网络攻击。在settings.py内添加如下代码:
DOWNLOAD_DELAY = 2
具体参数可根据不同网站自行调试,一般设置1~3秒
设置浏览器用户代理
简单的设置,直接在Request请求函数内添加headers参数:
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'}
Request(response.url, headers=self.header,callback=self.next, dont_filter=True)
如果长时间爬取大量数据,这样只用一个请求头肯定是不行的,需要随机调用不同的请求头。先在settings.py内添加请求头数组:
MY_USER_AGENT = [
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
"Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
"