網路爬蟲反反爬小技巧(二)Pyppeteer

2021-10-11 15:26:22 字數 1945 閱讀 9752

上一節說到了selenium,它的功能的確非常強大,但很多時候我們會發現 selenium 還是有一些不太方便的地方,比如速度太慢、對版本配置要求嚴苛,最麻煩是經常要更新對應的驅動,還有些網頁是可以檢測到是否使用了selenium 。

所以在這裡我們就要請出爬蟲神器 「pyppeteer」 了,雖然支援的瀏覽器比較單一,但在安裝配置的便利性和執行效率方面都要遠勝 selenium。pyppeteer 依賴於 chromium 這個瀏覽器來執行的。有了 pyppeteer 之後,我們就可以免去那些煩瑣的環境配置等問題。如果第一次執行的時候,chromium 沒有安裝,那麼程式會幫我們自動安裝和配置。另外 pyppeteer 是基於 python 的新特性 async 實現的,所以它的一些執行也支援非同步操作,效率相對於 selenium 來說也提高了。(具體用法移步到:

這裡以乙個簡單demo展示其用法(以開啟csdn首頁為例):

import asyncio

from pyppeteer import launch

async def main():

browser = await launch(headless=false, args=['--disable-infobars'])

page = await browser.newpage()

await page.goto('')

await asyncio.sleep(100)

await browser.close()

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

不過在使用 pyppeteer 仍然會遇到無頭瀏覽器檢測,這裡安利乙個第三方庫「pyppeteer-stealth」,這個庫是「puppeteer-extra-plugin-stealth」的python移植版。

)。 )。用法也很簡單,這裡粘上其在pypi上的demo:

import asyncio

from pyppeteer import launch

from pyppeteer_stealth import stealth

async def main():

browser = await launch(headless=true)

page = await browser.newpage()

await stealth(page) # <-- here

await page.goto("")

await browser.close()

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

這樣就可以省去隱藏webdriver等操作,可謂省時省力省心。

最後,說下 pyppeteer 使用帶有許可權驗證的**的方式,其中關鍵點有兩個:

乙個是在 args列表中的 '--proxy-server=',它的作用是把** ip 傳入到pyppeteer 中。

第二個是 awaitpage.authenticate()用於指定** ip 的賬號和密碼。

import asyncio

from pyppeteer import launch

async def register():

browser = await launch(']

})page = await browser.newpage()

# 設定**ip驗證

await page.authenticate()

await page.goto('')

doc = await page.content()

print(doc)

await browser.close()

asyncio.get_event_loop().run_until_complete(register())

爬蟲 反反爬 IP

ip反爬不用說了,入門級的 git上開源的proxy pool很多,找那個most star的,缺點用的人多,響應速度慢,可用率低。公司有預算的話,購買付費 常用的幾家 芝麻 阿布雲,多貝雲,大象,曾打 給 公司,貌似都是在全國各地拉網線,建機房,adsl撥號,質量差不太多,詳細參考崔慶才部落格,有...

Python爬蟲反反爬總結

最基本的反爬手段,一般被關注的變數是useragent和refer,可以考慮使用瀏覽器裡的。其中的contentlength欄位requests包會填寫,可以不用。content type欄位是post表單的格式,必須和 的一樣。待續資料量大用ip池 偽裝成多個訪問者 爬取速度要求低用sleep 偽...

python爬蟲之反爬與反反爬技術

1 headers請求頭協議 可以在每個網頁的這裡找到 這裡的request headers就可以找到我們需要加上的請求頭資訊,使用requests模組一般情況下加上 user agent 就行了。下面對請求頭資訊裡的幾個部分做乙個簡單介紹 user agent 儲存在使用者終端上的資料 refer...