python+webdriver 网页自动登录

爬取某些网页时会出现因未登录或登录状态超时而自动转到登录界面,导致爬取信息失败。再次可使用保存cookie文件至本地并于每次爬取时导入cookie文件达到自动登录的目的(cookie文件可能会无效,需要再次保存。至少我爬取的网页每过一天需要重新保存次cookie文件。。。)

cookie是什么(引用,详情点击链接):

  简单地说,cookie 就是浏览器储存在用户电脑上的一小段文本文件。cookie 是纯文本格式,不包含任何可执行的代码。一个 Web 页面或服务器告知浏览器按照一定规范来储存这些信息,并在随后的请求中将这些信息发送至服务器,Web 服务器就可以使用这些信息来识别不同的用户。大多数需要登录的网站在用户验证成功之后都会设置一个 cookie,只要这个 cookie 存在并可以,用户就可以自由浏览这个网站的任意页面。再次说明,cookie 只包含数据,就其本身而言并不有害。

准备工作:

  命令行安装pickle

pip install pickle

保存cookie文件:

import pickle
from selenium import webdriver

chromePath = r'D:\Driver\chromedriver.exe' # chrome模拟浏览器

wd = webdriver.Chrome(executable_path= chromePath)  # Chrome浏览器
wd.get(url)
'''
  进行登录操作,输入用户名,密码,点击登录按钮
'''
pickle.dump(wd.get_cookies(), open("地址+cookie.pkl", "wb"))

登录操作参见:python+webdriver 模拟登陆

 

web使用cookie文件:

import pickle
import selenium.webdriver
chromePath = r'D:\Driver\chromedriver.exe' # chrome模拟浏览器

wd = webdriver.Chrome(executable_path= chromePath)  # Chrome浏览器
driver.get(url) 
cookies = pickle.load(open("cookies.pkl", "rb")) 
for cookie in cookies: 
  driver.add_cookie(cookie)

 

爬虫使用cookie文件:

import pickle
import requests
from selenium import webdriver

url = ''

cookies = pickle.load(open("cookie.pkl", "rb"))

req = requests.Session()  # 构建Session
for cookie in cookies:
    req.cookies.set(cookie['name'],cookie['value'])  # 转换cookies

req.headers.clear()  # 删除原始req里面标记有python机器人的信息
r = req.get(url)  # 用req
r.raise_for_status()
r.encoding = r.apparent_encoding

print(r.text)

 

参考链接:Python模拟登陆万能法-微博|知乎

     How to save and load cookies using Python + Selenium WebDriver

 

请使用手机"扫一扫"x

转载于:https://www.cnblogs.com/MO-OF/p/8405207.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值