以编程方式标识的Cookie未被接受

时间:2018-11-22 07:42:01

标签: python cookies web-scraping request

我正在使用Python 2制作一个网络抓取工具,该抓取工具读取网站的某些内容。要访问内容,我需要传递一个cookie。现在,我正在通过在Chrome中打开网站来查找cookie,然后从站点信息中查找cookie。我正在将该Cookie硬编码到我的刮板上,并从网站上获取内容。但是,cookie会在几个小时内失效,因此无法从网站中提取任何信息。为了解决这个问题,我正在尝试在需要新的cookie时刷新刮板自身中的cookie。

我尝试了以下两个代码

第一种方法

import requests
import browsercookie
try:
    cj = browsercookie.chrome()
    session = requests.Session()
    r = session.get(base_url, cookies=cj)
    new_cookie = str(session.cookies.get_dict()['JSESSIONID'])        
except Exception as e:
    pass

第二种方法

with requests.Session() as s:
    headers = {
        'User-Agent':  'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest'
    }  
    headers['Connection'] = 'keep-alive'
    r = s.get(baseurl, headers=headers)
    new_cookie = s.cookies.get_dict()['JSESSIONID']

所有这些代码返回的cookie看起来都很好。我面临的问题是,这些以编程方式识别的Cookie使刮板无法提取任何结果。当我从刮板向网站发出请求时,将在浏览器中找到的cookie发送为硬编码时,刮板将获取网站的DOM。但是,当我通过刮板向网站提出请求时以编程方式发送找到的Cookie时,刮板无法访问Webiste的DOM。

浏览器上的cookie信息表明,cookie“在浏览会话结束时”无效。

这很令人困惑。在整个过程中我缺少什么?

0 个答案:

没有答案