python爬取动态cookie的页面

        在使用requests进行爬虫的时候,很多时候回遇到反爬,其中一个就是cookie会动态变化,如何解决cookie动态变化呢?

        当遇到此类反爬的时候,可以使用selenium来解决,selenium是一个使用代码操作浏览器的自动化工具,它可以模拟人操作电脑。

        安装selenium

pip install selenium

        先使用selenium获取到网页动态的cookie,然后再使用requests将cookie拼接到headers中,整个代码及解释如下:

import selenium
import requests


# 使用浏览器开发者模式,配置实验性功能参数
option = webdriver.ChromeOptions()
#设置此属性,浏览器不会弹请禁用开发者模式的弹框
option.add_experimental_option('useAutomationExtension', False)
# 设置开发者模式启动,该模式下webdriver属性为正常值,如果不设置,某些网站会检测出window.navigator.webdriver属性,该属性是会被网站认为是爬虫程序,因此隐藏该属性
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = webdriver.Chrome("XXX:\Google\Chrome\Application\chromedriver.exe", options=option)

#此处使用郑州商品交易所举例,该网站不光cookie动态变化,而且会进行window.navigator.undefined属性的检测
#大家可以先手动点开该网址,在console界面输入:window.navigator.webdriver,会返回undefined
#然后使用程序,将上面隐藏undefined属性的地方注释,然后将下面等待内容多等待会,在打开网页后,再输入window.navigator.webdriver,会发现返回的是true
driver.get("http://www.czce.com.cn/cn/jysj/mrhq/H770301index_1.htm")

# 等待内容加载完成
time.sleep(3)
# 获取cookie
dictCookies = driver.get_cookies()
#获取每个cookie
cookies = [item['name'] + '=' + item['value'] for item in dictCookies]
# 拼接cookie
cookieStr = '; '.join(item for item in cookies)

URL = 'http://www.czce.com.cn/cn/DFSStaticFiles/Future/2021/20210420/FutureDataDaily.htm'
# 引入 requests,将动态cookie存入,其余的请求头这里不再显示
headers = {
    'Cookie':cookieStr
}


res = requests.get(URL, headers=headers)

res.encoding='utf-8'

r=res.text
print(r)

 

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值