网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Python爬虫之基于selenium实现12306模拟登录

参考:https://blog.csdn.net/m0_/article/details/

解决了个主要问题,滑块验证错误。

文件由:vscode 编写,浏览器驱动为 EDGE.
驱动下载地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

专注于为中小企业提供成都做网站、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业浑源免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Aixiu
# @Time  : 2022/10/17 17:48:24

from selenium import webdriver
from selenium.webdriver.edge.service import Service
# 无头Edge浏览器库及规避检测
from selenium.webdriver.edge.options import Options
# 导入动作链对应的类
from selenium.webdriver import ActionChains
import time

# 创建一个参数对象,用来控制 Edge以无界面模式打开
edge_options = Options()
# 反检测设置 #
# 规避被检测到的风险
# 开启开发者模式
# option = EdgeOptions()
edge_options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 去掉:浏览器上方有“Chrome正受到自动测试软件的控制
edge_options.add_experimental_option("detach", True)
# 禁用启用Blink运行时的功能
edge_options.add_argument('--disable-blink-features=AutomationControlled')

# 将参数传给浏览器 (options=edge_options)
bro = webdriver.Edge(service=Service('./msedgedriver.exe'), options=edge_options)
bro.get('https://kyfw..cn/otn/resources/login.html')

# 解决特征识别, 用来解决滑块出错,验证问题
script = 'Object.defineProperty(navigator, "webdriver", {get: () => false,});'
bro.execute_script(script)

# 根据id获取用户账号输入框、密码输入框,并输入账号密码
time.sleep(2)
username_tag = bro.find_element(by='id', value='J-userName').send_keys('改为你的用户名')
time.sleep(2)
password_tag = bro.find_element(by='id', value='J-password').send_keys('改为你的密码')

# 根据id获取登录按钮并点击
login_btn = bro.find_element(by='id', value='J-login').click()

# 尽量休眠长一点,不然,代码难以定位到滑块
time.sleep(2)
span = bro.find_element(by='id', value='nc_1_n1z')

# 定义动作链,点击并拖拽
aco = ActionChains(bro)

# 点击并长按
aco.click_and_hold(span)

#perform()立即执行动作链操作

for i in range(10):
    aco.move_by_offset(36,0).perform()
    time.sleep(0.3)
    
# 释放动作链
aco.release()
time.sleep(2)

# 点击登录后的弹窗 确定 按钮
ok_btn = bro.find_element(by='class name', value='ok').click()

time.sleep(5)
bro.quit()

分享标题:Python爬虫之基于selenium实现12306模拟登录
浏览路径:http://bjjierui.cn/article/dsogcsd.html

其他资讯