首頁 >後端開發 >Python教學 >如何使用 PyQt QWebPage 有效率地抓取多個 URL?

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

Susan Sarandon
Susan Sarandon原創
2024-10-26 07:16:30287瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn