小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用Python自動填寫問卷星(pyppeteer反爬蟲版)...

 高階漁夫 2021-12-15

本方法可能已被問卷星破解

引言

原準備用python+selenium完成對問卷星的自動填寫,但在填寫完成后出現(xiàn)智能驗證提示(可能是問卷星升級了,加強了對爬蟲的監(jiān)視叭!)
在這里插入圖片描述
emm,這個問題還不難解決,最大的問題在于在點擊智能驗證按鈕后卻顯示驗證失敗…
在這里插入圖片描述
在網(wǎng)上查找一翻資料后找到了用pyppeteer解決反爬的方法,過程如下


準備

  • 安裝python第三方庫asyncio、pyppeteerpyppeteer_stealth

完整代碼

說明:本代碼可實現(xiàn)利用pyppeteer自動問卷星填寫填空題,填空題,日期選擇題,地址(手動輸入)

import asyncio
from pyppeteer import launch
from pyppeteer_stealth import stealth    # 反爬蟲第三方庫

async def main():
    # launch方法會新建一個browser對象,然后賦值給browser
    browser = await launch({
        # 路徑就是你的谷歌瀏覽器的安裝路徑
        'executablePath': 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
        # Pyppeteer 默認使用的是無頭瀏覽器,所以要顯示需要給False
        'headless': False,
        # 設置Windows-size和Viewport大小來實現(xiàn)網(wǎng)頁完整顯示
        'args': ['--no-sandbox', '--window-size=1366,850']
    })

    # 調(diào)用 newPage 方法相當于瀏覽器中新建了一個選項卡,同時新建了一個Page對象
    page = await browser.newPage()
    await page.setViewport({'width':1366,'height':768})
    # 防止頁面識別出腳本(反爬蟲關鍵語句)
    await stealth(page)

    # 調(diào)用了Page對象的goto方法就相當于在瀏覽器中輸入問卷的網(wǎng)址,瀏覽器跳轉到了對應的頁面進行加載
    await page.goto('網(wǎng)址')
    # 填空題:page.type(selector,text),在指定selector的元素上填寫text
    await page.type('#q1', '姓名')
    await page.type('#q2', '學號')
    await page.type('#divquestion5 > table > tbody > tr:nth-child(1) > td > div > textarea', '體溫')
    
    # 單選題:先用page.querySelector(selector)找到指定的元素,再調(diào)用元素的click()方法
    button = await page.querySelector("#divquestion3 > ul > li:nth-child(8)")
    await button.click()
   
   	# 地址題:先點擊手動填寫地址,再在地址框內(nèi)填寫相應地址
    address = await page.querySelector("#divquestion7 > ul > li:nth-child(1) > label")
    await address.click()
    await page.type('#q9', '地址')
    
    # 日期選擇題:先點擊日期選擇框,在出現(xiàn)的iframe尋找元素并調(diào)用click()方法
    date1 = await page.querySelector("#q4")
    await date1.click()
    
    frame = page.frames
    date2 = await frame[1].querySelector('#selectTodayButton')
    await date2.click()

    # 找到提交按鈕提交
    submit = await page.querySelector('#submit_button')
    # await submit.click()
    await asyncio.sleep(2)                 # 頁面延遲2s看是否提交成功
    await browser.close()
    

asyncio.get_event_loop().run_until_complete(main())

注:如何尋找網(wǎng)頁元素的selector請自行百度

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多