这里介绍几种工作中遇到过的常见反爬虫机制及应对策略。

爬虫的君子协议

有些网站希望被搜索引擎抓住,有些敏感信息网站不希望被搜索引擎发现。

网站内容的所有者是网站管理员,搜索引擎应该尊重所有者的意愿,为了满足以上等等,就需要提供一种网站和爬虫进行沟通的途径,给网站管理员表达自己意愿的机会。有需求就有供应,robots协议就此诞生。

scrapy是默认遵守robots协议的,需要我们在settings.py文件中将代码改成

ROBOTSTXT_OBEY = Flase

封锁请求头

当访问过于频繁的时候,网站后台会去识别你的请求头,判断你是浏览器访问,还是程序访问。

我们只需要伪造请求头信息,制造出浏览器访问的假象。

以下分别提供三个爬虫代码的请求头更改

1 import requests
2 import re
3 
4 url = 'https://list.tmall.com/search_product.htm?q=%B0%D7%BE%C6&type=p&vmarket=&spm=875.7931836%2FB.a2227oh.d100&from=mallfp..pc_1_searchbutton'
5 
6 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'}
7 
8 content = requests.get(url,headers=headers)

requests版