天天看點

網絡爬蟲-pyqt5繞過反爬服務那麼請嘗試使用pyqt5

當遇到使用selenium被網站識别為robot的時候,首先考慮的是換chromedriver,geckodriver,iedriver等

如果都行不通

那麼請嘗試使用pyqt5

pyqt5不僅可以做界面,他還可以調用強大的QtWebKit子產品,QtWebKit是一個基于開源項目 ,WebKit的網頁内容渲染引擎,借助該引擎可以更加快捷地将萬維 網內建到 Qt 應用中。

舉一個小小的例子:

網絡爬蟲-pyqt5繞過反爬服務那麼請嘗試使用pyqt5

當我們使用selenium登陸淘寶時,出現了滑塊,就算我們用人工去拖動,卻還是會出現無法登陸的情況,因為淘寶将你識别了出來,這樣你就永遠無法通過驗證了,即使你是打開Selenium的情況下人為去拖動滑塊驗證碼。

看看pyqt5:

網絡爬蟲-pyqt5繞過反爬服務那麼請嘗試使用pyqt5

可以發現使用pyqt5的時候淘寶官網并沒有發現你是使用的第三方浏覽器插件。

接下來我們就可以做我們該做的事情。

這裡注意一下,pyqt5驅動的浏覽器,隻能通過注入js來操作頁面,這裡對js的熟練度要求就比較高了,比如利用js拖動滑塊驗證等。

簡易的打開pyqt5浏覽器的代碼,js需要自己多多練習,比如抓取資料等。

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl


app = QApplication([])
view = QWebEngineView()
view.load(QUrl("http://www.taobao.com/"))
view.show()
page = view.page()

def test():
	page.runjavascript("your javascript")

view.loadFinished.connect(test)

app.exec_()
           

selenium的功能還是比pyqt5的浏覽器強大很多,但是在無法繞過反爬蟲服務的情況下,可以考慮一下pyqt5,比如一打開selenium就被識别出來,distil networks這種反爬蟲服務商,pyqt5是內建的chromium核心源碼,是以不會被識别,但是注入js來操控爬蟲的方式有點蛋疼,還需多多學習

繼續閱讀