Scrapy爬虫框架使用时设置User-agent和Cookies(包含scrapy shell)

学习用scrapy写爬虫时遇到了网站的反爬,需要自定义下用户代理和Cookies,改掉Scrapy工程里的设置后发现Scrapy Shell并没有跟着被设置,需要单独修改,这里记录在一起。

包括两部分的设置,一个是Scrapy工程本身,一个是Scrapy shell的设置。

Pycharm Scrapy工程

  1. 打开settings.py

  2. 设置USER_AGENT = ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36’
    (这个是最基础的修改方法,如果想要有一个代理池,每次请求网页都随机一个可以参考文章Scrapy学习篇(十一)之设置随机User-Agent)

  3. 设置COOKIES_ENABLED = False

  4. DEFAULT_REQUEST_HEADERS中加入'cookies': 'cookies的值'

    注意:这三个参数本来是被注释掉的,需要解开注释

    USER_AGENT这个参数Scrapy会给一个默认的代理,会被限制代理的网站反爬,这里只需要在网上随便搜索一个浏览器的代理换掉默认的就可以,我这里用的我自己mac chrome的代理,直接复制粘贴。
    COOKIES_ENABLED这个参数设置为False就是使用Scrapy默认的Cookie,这个设置好后再修改一下默认的Cookies就好了。
    cookies这个值主要是针对需要登陆才能爬取的网站,具体获取方法为如下

    1. 手动登陆该网站的账号 2.F12打开调试 3.随便找一个network请求,查看请求头,找到里面的Cookies 4.复制粘贴(如图所示)

    Scrapy爬虫框架使用时设置User-agent和Cookies(包含scrapy shell)_第1张图片
    这样之后Scrapy工程就可以正常爬取网页内容了,接下来是Scrapy Shell的修改方法

Scrapy Shell

在terminal中:

  1. 进入爬虫的虚拟环境

  2. 下载安装ipython
    pip install ipython

  3. 输入以下命令

    scrapy shell  # 进入scrapy shell
    url = 'www.baidu.com'  # 要爬取的网页地址
    headers = {'User-Agent': '你的代理'}
    cookies = {'key1': 'value1', 'key2': 'value2'} # 将cookie变为键值对的字典模式
    req = scrapy.Request(url, cookies=cookies, headers=headers)  # 设置请求头和cookie
    fetch(req)  # 执行请求
    # 至此Scrapy Shell应该已经成功请求到了网页源码,使用以下代码可以查看请求到的页面
    view(response)
    

补充:在浏览器中复制粘贴的cookies不是键值对,是类似于以下的字段:_ga=GA1.2.1546398633.1612486847; __gads=ID=38e84e9507ee99d7:T=1612486847:S=ALNI_MZ7YnywlkO2yMq7OpO1BY0hPsHfLw; UM_distinctid=17770e96e5079f-0367ea4cd548b3-33647309-168000-17770e96e51888;

可以用以下python代码处理为键值对:

cookie_str = 'ga=GA1.2.1546398633.1612486847; __gads=ID=38e84e9507ee99d7:T=1612486847:S=ALNI_MZ7YnywlkO2yMq7OpO1BY0hPsHfLw; UM_distinctid=17770e96e5079f-0367ea4cd548b3-33647309-168000-17770e96e51888;'

cookie = {}

for line in cookie_str.split(';'):
    key, value = line.split('=', 1)
    cookie[key] = value

print(cookie)

再复制粘贴到shell

如果fetch后结果显示如下,就应该已经成功请求网页了。在这里插入图片描述

你可能感兴趣的:(爬虫,python,cookie,爬虫)