欢迎光临散文网 会员登陆 & 注册

Python超强爬虫8天速成(完整版)爬取各种网站数据实战案例

2023-03-03 17:21 作者:咕咕不是嘟嘟哟_  | 我要投稿

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()


Python超强爬虫8天速成(完整版)爬取各种网站数据实战案例的评论 (共 条)

分享到微博请遵守国家法律