我正在使用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“在浏览会话结束时”无效。
这很令人困惑。在整个过程中我缺少什么?