Selenium 模拟登录淘宝,获取cookies给requests使用

文章目录


前言

今天爬取淘宝商品图片,遇到登录拦截,看了淘宝的登录 url 里的请求参数,好多加密,果断放弃。
不过可以用selenium模拟登录,然后获取cookies给requests使用,开整。


代码

from selenium import webdriver
from selenium.webdriver.support import wait
from selenium.webdriver.common.by import By
import requests
from requests.cookies import RequestsCookieJar
from fake_useragent import UserAgent


class SeleniumGetCookies:
    def __init__(self, user, pwd):
        self.user = user
        self.pwd = pwd

        ua = UserAgent()
        headers = {
   
            'User-Agent': ua.random
        }
        self.session = requests.Session()
        self.session.headers.update(headers)
		
		# 配置chrome,绕过淘宝的检测
        option = webdriver
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Selenium 的 `get_cookies()` 方法返回的是一个 Cookie 列表,每个 Cookie 是一个字典类型,包含了 Cookie 的各种属性,如 `name`、`value`、`domain`、`path`、`expiry` 等。如果你想将 Selenium 获取到的 Cookie 转换为 requests使用Cookie 字典类型,可以使用以下代码: ```python import requests from selenium import webdriver # 启动浏览器,访问网站,登录等操作 driver = webdriver.Chrome() driver.get('http://example.com') # ... # 获取浏览器中的 Cookie cookies = driver.get_cookies() # 将浏览器中的 Cookie 转换为 requests使用Cookie 字典类型 cookie_dict = {} for cookie in cookies: cookie_dict[cookie['name']] = cookie['value'] # 使用 requests 库发送请求 response = requests.get('http://example.com', cookies=cookie_dict) ``` 在上面的例子中,`cookies` 变量是一个 Cookie 列表,通过遍历列表将每个 Cookie 转换为字典类型,并将其添加到 `cookie_dict` 字典中。最后,将 `cookie_dict` 字典作为 `cookies` 参数传递给 `requests.get()` 方法即可。 ### 回答2: selenium.get_cookies()方法是用于获取当前浏览器页面中的所有cookie信息,而不是用于requests库。 当我们使用Selenium库来进行自动化测试时,可以使用get_cookies()方法来获取当前页面中的所有cookie。这些cookie信息可以包括名称、值、域名、路径、过期时间等。 而当我们使用requests库来发送HTTP请求时,我们可以通过传递cookie参数来模拟浏览器的会话状态。这可以通过创建一个cookie字典,包含在请求header中来实现。requests库提供了一个cookies参数,用于在请求中传递cookie信息。 相比于Selenium的get_cookies()方法,对于requests库来说,我们可以使用requests.get()或requests.post()方法来发送请求,并将cookie作为参数传递给这些方法,使得我们可以在代码中模拟登录、保持会话等操作。 要注意的是,Seleniumrequests库是两种不同的工具,用途也有所不同。Selenium主要用于自动化测试,而requests库则是一个发送HTTP请求的第三方库。因此,selenium.get_cookies()方法无法直接用于requests库。如果我们希望通过requests库来模拟浏览器的会话状态,我们需要手动将Selenium获取cookie信息转化为requests可用的格式,并将其作为参数传递给requests库相关的方法。 ### 回答3: selenium.getcookies()函数用于获取当前页面的cookie并返回一个字典。它可以用于在使用requests库发送HTTP请求时,将获取cookie添加到请求头中,以维持登录状态或其他需要cookie的操作。 使用selenium.getcookies()的步骤如下: 1. 首先,通过selenium库的webdriver打开一个网页,登录并获得所需的cookie。 2. 使用getcookies()函数获取当前页面的cookie,返回一个字典。 3. 导入requests库,并创建一个会话对象session来发送HTTP请求。 4. 使用session对象的cookies属性来将获取cookie添加到请求头中。 下面是一个简单的示例代码: ```python from selenium import webdriver import requests # 使用selenium webdriver打开一个网页,并登录获取cookie driver = webdriver.Chrome() driver.get("https://example.com") # 假设已经登录获取到了cookie # 获取当前页面的cookie cookies = driver.get_cookies() # 使用requests库发送HTTP请求 session = requests.Session() # 将获取cookie添加到请求头中 for cookie in cookies: session.cookies.set(cookie['name'], cookie['value']) # 发送GET请求 response = session.get("https://example.com") print(response.text) # 关闭driver driver.close() ``` 这样,在使用requests库发送GET请求时,会自动带上cookie信息,达到维持登录状态的目的。注意在实际使用中需要根据具体情况进行适当的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值