我们的爬虫在爬取网站的时候,有时候会遇到一些网站的基本反爬虫设置,比如检查我们的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+端口这种,自己维护一个代理池,过几分钟切换一个代理,这样保证爬虫正常运行。

最后修改:2019 年 05 月 06 日 11 : 36 AM