我们的爬虫在爬取网站的时候,有时候会遇到一些网站的基本反爬虫设置,比如检查我们的user-agent
或是cookies等,这个时候就需要对我们的请求头部做一些设置了。
这里我们使用的是requests库。
headers 请求头设置
-
通过requests
headers = { "Referer": "https://www.xxx.com", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36", "cookie": 'xxxx', } requests.get(url, headers=headers)
-
通过session方式
s = requests.Session() res = s.get(current_url, headers=headers)
-
Referer:这个参数只要是用来防盗链的,比如有些网站设置了只有从本网站访问一些资源才可以用(比如下载图片、视频等)
-
User-Agent:标识访问网站的客户端,比如python默认的可能是python xxx,而百度爬虫是BaiduSpider这种,我们一般都设置为浏览器比较好。
-
cookie:这个一般网站有要求再设置吧。
代理设置
这里的代理有两个作用:
- 针对一些网站对于频繁访问的ip进行封锁,反爬虫的一种方式;这个时候可以通过代理切换ip来继续爬取。
- 爬取一下国外资源,而这部分资源可能处于GFW的封锁范围内;比如youtube。
首先说一下代理如何使用:
- 通过requests方式
proxies = { 'http': 'http://127.0.0.1:1080', 'https': 'http://127.0.0.1:1080' } requests.get(url, headers=headers, proxies=proxy)
- 通过session方式
s = requests.Session() res = s.get(current_url, headers=headers, proxies=proxies)
上述这种方式主要用于爬取国外资源,这里通过本地代理访问。
如果是针对于第一种情况(网站反爬封锁ip),可以去寻找免费代理或者购买收费代理,一般都是IP+端口这种,自己维护一个代理池,过几分钟切换一个代理,这样保证爬虫正常运行。