关于selenium爬虫自动登录爬取数据及自动精准抢购利器

本文介绍了如何利用Python的Selenium库自动化登录12306网站,包括设置ChromeOptions防止浏览器自动关闭,处理滑动验证以及Ajax页面的延迟问题。还提示了应对验证码的方法,如使用第三方工具。
摘要由CSDN通过智能技术生成
  1. 首先下载关于selenium库;


  1. 关于自动登录12306网的源码(在源码中有各步骤的详细中文解决):

# 12306网站selenium自动化登录

from selenium.webdriver import Chrome, ChromeOptions
import time
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
options = ChromeOptions()  # 创建谷歌浏览器

options.add_experimental_option("detach", True)  # 修改谷歌浏览器测试选项中的参数,使得打开后的浏览器不会自动关闭
# 添加_实验_选项

# options.add_argument('--start-maximized')  # 这里是不去掉网页头部的大窗口浏览
options.add_argument('--disable-blink-features=AutomationControlled')
# 修改谷歌浏览器中的window.navigator.webdriver(正常浏览器控制台中用来检测是不是机器操作的行为,正常浏览器为False)
# 通过以上对add_argument参数的修改即可

web = Chrome(options=options)  # 创建一个浏览器对象并将修改好的参数传入进去
web.get("https://kyfw.12306.cn/")
 # 打开网页
time.sleep(2)

web.find_element(By.XPATH, '//*[@id="J-userName"]').send_keys('123455678')   # 这两行分别是填入12306的账号与密码
web.find_element(By.XPATH,'//*[@id="J-password"]').send_keys('876545321')    # 这里用来演示就不是真实账号
web.find_element(By.XPATH,'//*[@id="J-login"]').click()
time.sleep(2)   # 这里的休眠很重要,不然反应太快脚本识别不到要拖动的东西,会报错!!!
btn = web.find_element(By.XPATH, '//*[@id="nc_1_n1z"]')   # 这里你注意找XPATH时在脚本自动打开的浏览器中找,不然位置不一样会报错
# 找到需要拖拽验证的滚动条
time.sleep(2)
ActionChains(web).drag_and_drop_by_offset(btn, 450, 0).perform()
# 从selenium.webdriver 中引入 ActionChains(链条)模块
# drag_and_drop_by_offset为拖拽的功能指令其中需传入的参数依次为 1.需拖拽的位置,2.横向拖拽的距离.3.纵向拖拽距离
# perform()执行指令
print(f"12306网自动化登录程序", end='\n''over!')

注:上面代码重要的点:

  1. 在使用selenium中遇到登陆时滑动进度条的问题;

  1. 在滑动进度条前要先解决浏览器在控制台可以识别出是否为机器或第三方来操作的问题(window.navigator.webdriver # 正常为False);

  1. 对与Ajax页面要使用time库来让程序休眠几秒,不然可能会报错;

  1. 对ActionChains()下的函数在其后加上perform()函数,才会执行;

  1. 最新的selenium库会程序执行完之后自动关闭,若不想让浏览器自动关闭 需在创建Chrome浏览器对象的时候对其选项中添加一个参数指定其bool(detach)值为True,即可解决此问题;

温馨:对与那些用cookies值登录用到验证码问题时,不用慌,这里可以在网上搜所那些比较成熟的验证码破解工具即可破解各种验证码,例如:(超级鹰)

ok,对上述程序就到这里咯,下次继续分享,如有歧义或其他更好的思路欢迎在评论区中指出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值