如何使用 PyQt QWebPage 有效率地抓取多個 URL?

Susan Sarandon
發布: 2024-10-26 07:16:30
原創
207 人瀏覽過

How to Efficiently Scrape Multiple URLs Using PyQt QWebPage?

使用PyQt QWebPage 抓取多個URL

PyQt 的QWebPage 提供了一種動態的網頁內容。但是,嘗試多次渲染可能會導致崩潰或意外行為。

問題識別

所提供程式碼中的問題源自於為每個應用程式建立多個 QApplication 和 QWebPage網址取得。相反,應該使用每個實例的單一實例,網頁則依靠其 loadFinished 訊號來觸發後續 URL 的內部處理。

解決方案

以下改進地址問題:

  1. 一個QApplication 和WebPage 實例: 創建單個QApplication 和WebPage,避免冗餘實例化。
  2. 內部處理循環: 利用 loadFinished 訊號順序取得 URL,在網頁內實現內部處理循環。
  3. 自訂 HTML 處理: 將使用者定義的插槽連接到 htmlReady 訊號,該訊號會發出 HTML 和每個頁面載入後的 URL 資訊。

用法

演示如何使用改進的網頁的示例代碼:

def my_html_processor(html, url):
    print('loaded: [%d chars] %s' % (len(html), url))

import sys
app = QApplication(sys.argv)
webpage = WebPage(verbose=False)
webpage.htmlReady.connect(my_html_processor)

# example 1: process list of urls

urls = ['https://en.wikipedia.org/wiki/Special:Random'] * 3
print('Processing list of urls...')
webpage.process(urls)

# example 2: process one url continuously

import signal, itertools
signal.signal(signal.SIGINT, signal.SIG_DFL)

print('Processing url continuously...')
print('Press Ctrl+C to quit')

url = 'https://en.wikipedia.org/wiki/Special:Random'
webpage.process(itertools.repeat(url))

sys.exit(app.exec_())
登入後複製

參考文獻

  • [PyQt5 網頁](https://doc.qt.io/qt-5/qwebenginepage.html)
  • [PyQt4 網頁](https: //doc.qt. io/archives/qt-4.8/qwebpage.html)

以上是如何使用 PyQt QWebPage 有效率地抓取多個 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!