国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Scrapy第十一(①)篇:selenium4模擬器中間件

這篇具有很好參考價值的文章主要介紹了Scrapy第十一(①)篇:selenium4模擬器中間件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

為什么要使用模擬器?

在使用request的時候,大型網(wǎng)站都有很多的反爬機(jī)制,典型比如滑動驗證碼、彈窗廣告、彈窗驗證、登錄認(rèn)證、Ajax異步加載...等等,這些是request很難繞過去的。這時候可以使用selenium模擬器來模擬用戶操作:Selenium可以根據(jù)的指令,讓瀏覽器自動加載頁面,獲取需要的數(shù)據(jù),甚至頁面截屏,或者判斷網(wǎng)站上某些動作是否發(fā)生等.

目錄

1.安裝依賴(已經(jīng)安裝過的,請先卸載再安裝,確保是最新版本)

2.驗證版本

3.下載驅(qū)動(兩種方式二選一)

4.測試Selenium4:訪問百度并搜索

5.編寫中間件:打開middlewares.py文件,新建中間件SeleniumMiddleware

6.開啟中間件:打開settings.py

7.selenium反屏蔽


1.安裝依賴(已經(jīng)安裝過的,請先卸載再安裝,確保是最新版本)

pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

2.驗證版本

pip list

Scrapy第十一(①)篇:selenium4模擬器中間件

3.下載驅(qū)動(兩種方式二選一)

①?使用SergeyPirogov (Sergey Pirogov) · GitHub自動下載驅(qū)動管理器(推薦)

pip install webdriver-manager -i https://pypi.tuna.tsinghua.edu.cn/simple

②手動下載并指定驅(qū)動

selenium3.0環(huán)境搭建_蒼穹之躍的博客-CSDN博客_selenium3版本單獨創(chuàng)建一個目錄,如:D:/drivers/,把不同瀏覽器的驅(qū)動都放到該目錄。geckodriver.exe第一步:單獨創(chuàng)建一個目錄,如:D:/drivers/bin ,把不同瀏覽器的驅(qū)動都放到該目錄。geckodriver.exe(Firefox)、chromedriver.exe(Chrome)、MicrosoftWebDriver.exe(Edge)、IEDriverServer.exe(IE)、operadriver.exe(Opera)等。然后,將D:/drivers/bin添加到系統(tǒng)環(huán)境.https://blog.csdn.net/wenxingchen/article/details/118105591

4.測試Selenium4:訪問百度并搜索

Scrapy第十一(①)篇:selenium4模擬器中間件

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

if __name__ == '__main__':
    # 初始化驅(qū)動
    service = ChromeService(executable_path=ChromeDriverManager().install())
    # 配置
    options = webdriver.ChromeOptions()
    # 實例化驅(qū)動
    driver = webdriver.Chrome(service=service, options=options)
    # 訪問百度
    driver.get("https://www.baidu.com/")
    # 獲取當(dāng)前頁面
    html = driver.page_source
    # 在頁面上執(zhí)行JS:基本上 API 沒有提供的所有功能都可以用執(zhí)行 JavaScript 的方式來實現(xiàn)
    driver.execute_script('alert("彈個框試試")')
    # 頁面停留
    time.sleep(10)
    # 銷毀實例
    driver.quit()

5.編寫中間件:打開middlewares.py文件,新建中間件SeleniumMiddleware

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

class SeleniumMiddleware(object):
        def process_response(self, request, response, spider):
        # 初始化驅(qū)動
        service = ChromeService(executable_path=ChromeDriverManager().install())
        # 配置
        options = webdriver.ChromeOptions()
        # 無頭模式
        # options.add_argument('--headless')
        # 獲取瀏覽器實例
        driver = webdriver.Chrome(service=service, options=options)

        # 訪問網(wǎng)頁
        driver.get(request.url)
        # 全屏
        # driver.maximize_window()
        # 一般用于異步加載-等待特定元素出現(xiàn):driver就是瀏覽器驅(qū)動,timeout就是等待的時長,until后是判斷元素是否出現(xiàn)的
        wdw = WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "lm_tabe"))
        # network記錄,這里可以獲得所有ajax請求的結(jié)果
        # logs = get_xhr_logs(driver)
        # 動態(tài)加載后的網(wǎng)頁
        html = driver.page_source
        # 退出瀏覽器
        driver.quit()
        return scrapy.http.HtmlResponse(url=request.url, body=html.encode('utf-8'), encoding='utf-8', request=request)

6.開啟中間件:打開settings.py

DOWNLOADER_MIDDLEWARES = {
    'announcement.middlewares.SeleniumMiddleware': 543,
}

7.selenium反屏蔽

有些網(wǎng)站加了一層對selenium 的檢測來防止一些爬蟲?;径际菍indow.navigator.webdriver屬性的檢測,只要將此屬性置成undefined即可。但是driver.execute_script()方法是在頁面加載后執(zhí)行的。而反屏蔽檢測是在頁面渲染之前就執(zhí)行了。我們可以使用本地代理的方式來繞過(后面幾章會講到),但這里我們使用更簡便的方式:使用CDP(Chrome Devtools-Protocol,Chrome 開發(fā)工具協(xié)議)來解決。

典型的selenium反屏蔽網(wǎng)站:Scrape | Movie

Scrapy第十一(①)篇:selenium4模擬器中間件文章來源地址http://www.zghlxwxcb.cn/news/detail-478486.html

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
if __name__ == '__main__':

    # 初始瀏覽器驅(qū)動
    options = webdriver.ChromeOptions()
    # 隱藏提示條
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    # 隱藏自動化擴(kuò)展信息
    options.add_experimental_option('useAutomationExtension', False)
    # 初始化驅(qū)動
    service = ChromeService(executable_path=ChromeDriverManager().install())
    # 瀏覽器實例化
    driver = webdriver.Chrome(service=service, options=options)

    # 隱藏window.navigator.webdriver
    driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
        'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
    })

    # 訪問
    driver.get("https://antispider1.scrape.center/")
    driver.execute_script('alert("彈個框試試")')
    time.sleep(10)
    # 退出驅(qū)動實例
    driver.quit()

到了這里,關(guān)于Scrapy第十一(①)篇:selenium4模擬器中間件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 蘋果IOS模擬器電腦版用哪個好 逍遙模擬器玩部分蘋果賬號互通

    蘋果IOS模擬器電腦版用哪個好 逍遙模擬器玩部分蘋果賬號互通

    蘋果IOS模擬器電腦版用哪個好 逍遙模擬器玩部分蘋果賬號互通 網(wǎng)上有IOS模擬器PC版,但是這個是IOS的SDK開發(fā)者方便在WINDOWS環(huán)境里開發(fā)調(diào)試IOS應(yīng)用的,不是用這個模擬器就能直接安裝IOS的應(yīng)用或者游戲來玩了,這個直接運行不了,必須是源代碼才能運行。 很多IOS的玩家想要在

    2024年02月04日
    瀏覽(17)
  • mac使用Simulator打開IOS模擬器(不使用Xcode打開IOS模擬器)

    mac使用Simulator打開IOS模擬器(不使用Xcode打開IOS模擬器)

    提示:打開模擬器的前提必須是安裝了Xcode。 在mac電腦上有Xcode可以用來模擬不同類型的手機(jī)進(jìn)行來解決ios兼容問題,這里記錄一下不使用Xcode打開ios模擬器的方法 快捷鍵:command+空格。搜索simulator,第一個就是模擬器 使用以下命令打開模擬器 結(jié)果如下圖

    2024年02月15日
    瀏覽(34)
  • M芯片Mac上最好用的安卓模擬器「MuMu模擬器Pro」正式發(fā)布!

    M芯片Mac上最好用的安卓模擬器「MuMu模擬器Pro」正式發(fā)布!

    MuMu模擬器 Pro: MuMu模擬器 Pro是網(wǎng) 易專為Mac電腦用戶開發(fā)的一款安卓模擬器產(chǎn)品,致力于為用戶提供流暢的安卓應(yīng)用和游戲體驗。針對Apple M系列芯片進(jìn)行了優(yōu)化,為Mac用戶帶來更加順暢的安卓系統(tǒng)使用體驗。本文將全面從獲取流程、使用 場景、性能、功能界面等方面對 MuM

    2024年02月20日
    瀏覽(25)
  • viple模擬器使用(四):unity模擬器中實現(xiàn)兩距離局部最優(yōu)迷宮算法

    viple模擬器使用(四):unity模擬器中實現(xiàn)兩距離局部最優(yōu)迷宮算法

    兩距離:指的是左側(cè)距離和右側(cè)距離 局部最優(yōu): 對當(dāng)前狀態(tài)來說最好的選擇 ,至于整體能不能達(dá)到最優(yōu),是無法確定的。 從節(jié)點1到節(jié)點5,一共有3條路 第1條路線:1→2→4→5,對應(yīng)的花銷是:2+3+4=9; 第2條路線:1→3→4→5,對應(yīng)的花銷是:1+5+4=10; 第3條路線:1→3→5,對

    2024年02月05日
    瀏覽(38)
  • 使用Android自帶模擬器模擬車載多屏顯示

    使用Android自帶模擬器模擬車載多屏顯示

    由于車機(jī)設(shè)備資源不夠,可采用 Android Studio 自帶模擬器來模擬車機(jī)多屏顯示,如下圖所示模擬一個Activity在不同屏幕顯示 更新Android Studio: 配置AVD參數(shù) Android SDK:12 開啟第二塊屏幕 按如下截圖4個步驟,設(shè)置Second Display的分辨率和屏幕密度 查看當(dāng)前屏幕ID信息,用下面adb命令

    2024年02月16日
    瀏覽(73)
  • Android Studio改變模擬器默認(rèn)安裝在C盤路徑,將模擬器安裝于自定義路徑

    Android Studio改變模擬器默認(rèn)安裝在C盤路徑,將模擬器安裝于自定義路徑

    ?直接點擊下載配置,安裝在默認(rèn)位置即可 ?我這里的路徑是 D:PathASphone ?打開編輯文件夾中的.ini文件 將path=后的路徑更換為自己之前移動后的文件夾路勁即可 ?本文為作者獨立編寫 ?本BLOG上所有的原創(chuàng)文章未經(jīng)本人許可,不得用于商業(yè)用途及傳統(tǒng)媒體。網(wǎng)絡(luò)媒體轉(zhuǎn)載請注

    2024年02月16日
    瀏覽(31)
  • Android 使用模擬器模擬Linux操作系統(tǒng)

    Android 使用模擬器模擬Linux操作系統(tǒng)

    在Android手機(jī)上使用模擬器模擬ubuntu等操作系統(tǒng),便于測試 Termux:是一款 Android 終端模擬器和 Linux 環(huán)境應(yīng)用程序,無需 root 或設(shè)置即可直接運行。雖然酷安和谷歌菜市場都能下載,但這些渠道都很久沒更新了,建議到 F - Droid 下載。 下載鏈接: https://f-droid.org/packages/com.termu

    2024年02月07日
    瀏覽(26)
  • 模擬器安裝magisk

    模擬器安裝magisk

    目錄 工具準(zhǔn)備: 一,添加模擬器-安卓9 ?二,安裝magisk軟件在模擬器上 ?三,打開magisk-on-android-x86 注意事項 1,修改system.vmdk文件異常解決方法 1.安卓9模擬器(Android_9??x86_64),下載地址:夜神安卓模擬器-安卓模擬器電腦版下載_安卓手游模擬器_手機(jī)模擬器_官網(wǎng) 這里說明一下

    2024年02月03日
    瀏覽(48)
  • HBuilderX連接模擬器

    HBuilderX連接模擬器

    1.打開MuMu模擬器 2.HBuilderX-【運行】-【運行到手機(jī)或模擬器】-【運行到Andriod App基座】 3.找到HBuilder中的adb目錄 4.查看adb的版本 7.查看連接的設(shè)備 8.使用模擬器連接電腦 常用模擬器端口 ?

    2024年02月12日
    瀏覽(32)
  • 華為模擬器實驗

    華為模擬器實驗

    在sw1和sw2之間配置鏈路聚合,并采用靜態(tài)lacp模式,以增加核心交換機(jī)之間的轉(zhuǎn)發(fā)速度 創(chuàng)建vlan以控制廣播,提高安全與性能 在兩個三層交換機(jī)上配置路由轉(zhuǎn)發(fā),以實現(xiàn)內(nèi)部vlan之間的通信 在核心交換機(jī)與路由器之間配置ospf 在公司路由器上創(chuàng)建loopback接口模擬主機(jī)并配置rip 在

    2024年04月16日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包