Python超强爬虫8天速成(完整版)爬取各种网站数据实战案例
12306模拟登陆已改为滑动验证,下面是个人手写代码,可借鉴下🌹
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains # 导入动作链对应的类
from selenium.webdriver import ChromeOptions # 实现selenium反爬规避
if __name__ == "__main__":
# 实现规避(主要规避代码)
option = ChromeOptions()
option.add_argument("--disable-blink-features=AutomationControlled")
option.add_experimental_option('excludeSwitches', ['enable-automation'])
bro = webdriver.Chrome('./chromedriver.exe',options=option)
bro.get('https://kyfw.12306.cn/otn/resources/login.html')
# 选中密码登录并点击
account = bro.find_element('id','J-userName')
account.send_keys('Elmous')
sleep(2)
#
passwd = bro.find_element('id','J-password')
passwd.send_keys('xykzxh1314')
sleep(2)
# 选中登陆按钮并点击
btn = bro.find_element('id','J-login')
btn.click()
sleep(3)
while True:
try:
# 动作链
span = bro.find_element('xpath','//*[@id="nc_1_n1z"]')
actions = ActionChains(bro) # 行为链实例化
sleep(2) # 等待2秒钟
# 经截图测量,滑块需要滑过的距离为300像素
actions.click_and_hold(span).move_by_offset(300, 0).perform() # 滑动
actions.release();
sleep(2);
a = bro.find_element('id',"nc_1_refresh1"); # 查找刷新按钮,如果没有说明登录成功,执行except跳出循环
a.click(); # 如果刚刚滑动失败,则点击刷新,重新滑动
except Exception as e:
print(e);
break;
sleep(2)
bro.quit()

