淘宝在不登录的情况下, 许多信息没有显示, 而在登录滑块验证时, selenium模拟会被检测出来, 所以我们利用手机扫码登录, 保存cookies并实现之后登录访问.
登录并保存cookie
import json
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
dirver = webdriver.Firefox(executable_path=r"D:\tools\geckodriver.exe", options=options)
dirver.get(
'https://login.taobao.com/member/login.jhtml?redirectURL=http%3A%2F%2Fbuyertrade.taobao.com%2Ftrade%2Fitemlist%2Flist_bought_items.htm%3Fspm%3D875.7931836%252FB.a2226mz.4.66144265Vdg7d5%26t%3D20110530')
# 这里是为了等待手机扫码登录, 登录后回车即可
input("请回车登录")
dictCookies = dirver.get_cookies()
jsonCookies = json.dumps(dictCookies)
# 登录完成后,将cookies保存到本地文件
with open("cookies_tao.json", "w") as fp:
fp.write(jsonCookies)
读取cookie实现免登陆访问
import json
import time
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument("--headless")
dirver = webdriver.Firefox(executable_path=r"D:\tools\geckodriver.exe", options=options)
# 初次建立连接, 随后方可修改cookie
dirver.get('http://www.taobao.com')
# 删除第一次登录是储存到本地的cookie
dirver.delete_all_cookies()
# 读取登录时储存到本地的cookie
with open("cookies_tao.json", "r", encoding="utf8") as fp:
ListCookies = json.loads(fp.read())
for cookie in ListCookies:
dirver.add_cookie({
'domain': '.taobao.com', # 此处xxx.com前,需要带点
'name': cookie['name'],
'value': cookie['value'],
'path': '/',
'expires': None
})
# 再次访问页面,便可实现免登陆访问
dirver.get("https://www.taobao.com")
time.sleep(3)
# 将页面保存为图片用于查看是否登录成功
dirver.save_screenshot("./taobao.png")
dirver.quit()