selenium登录淘宝获取cookie

import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

Options = webdriver.ChromeOptions()
Options.add_experimental_option('detach', True)
# 若网速慢,可以添加不加载图片设置

lol_html = webdriver.Chrome(service=Service(executable_path='.\chromedriver.exe'), options=Options)
URL = 'https://tb.alicdn.com/snapshot/index.html'
lol_html.get(url=URL)
time.sleep(2)
# lol_html.maximize_window()

# 不同浏览器复制出来的selector可能不同
login_button = lol_html.find_element(
    By.CSS_SELECTOR,
    'body > div.screen-outer.clearfix > div.main > div.main-inner.clearfix > div.col-right > div.tbh-user.J_Module > div > div.member-ft > div.member-logout.J_UserMemberLogout > a.btn-login.ml1.tb-bg.weight')

# 点击事件
'''
原因:在点击某个元素时,有其他元素(例如遮罩层、弹窗、广告等)在你想要点击的元素上方,
导致selenium点击了阻挡的元素
login_button.click() 
解决办法目前有两种:1.使用显性等待
2.使用JavaScript点击

附加:若想要点击的元素在视窗之外,selenium可能无法点击它,可以使用execute_script来滚动页面
'''

# 第二种方法
element = lol_html.find_element(By.CLASS_NAME, 'btn-login')
lol_html.execute_script('arguments[0].click();', element)

"""
在进行某个事件,出现的新的页面后,selenium并不会自动切换到新的页面,得手动调
windows.handles:查看目前浏览器存在的标签页,返回一个列表
switch_to.window:切换标签页
"""
lol_html.switch_to.window(lol_html.window_handles[-1])

from selenium.webdriver.support.wait import WebDriverWait  # 导入显示等待模块
from selenium.webdriver.support import expected_conditions as EC  # 导入期望模块

WebDriverWait(lol_html, 60).until(
    EC.text_to_be_present_in_element(
        (By.CSS_SELECTOR,
         'body > div.screen-outer.clearfix > div.main > div > div.col-right > div.tbh-user-container > div > div > div.J_UserMemberWrap.member-bd.member-bd-login > a.J_UserMemberNickUrl.member-nickurl > span > strong.J_UserMemberNick.member-nick'),
        'tb298181745'
    )
)

cookies = lol_html.get_cookies()  # 获取cookie信息
# print(cookies, type(cookies)) # <class 'list'>

with open(r'.\cookies.txt', 'w', encoding='utf-8') as fc:
    fc.write(str(cookies))

# with open(r'.\cookies.txt', 'r', encoding='utf-8') as fc:
#     f = fc.read()
#     print(f, type(f))  # <class 'str'>

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值