ホームページ > バックエンド開発 > Python チュートリアル > PyQt QWebPage を使用して複数の URL を効率的にスクレイピングする方法

PyQt QWebPage を使用して複数の URL を効率的にスクレイピングする方法

Susan Sarandon
リリース: 2024-10-26 07:16:30
オリジナル
284 人が閲覧しました

How to Efficiently Scrape Multiple URLs Using PyQt QWebPage?

PyQt QWebPage で複数の URL をスクレイピングする

PyQt の QWebPage は、Web ページをレンダリングする手段を提供し、動的に読み込まれるコンテンツに適しています。ただし、複数のレンダリングを試行すると、クラッシュや予期しない動作が発生する可能性があります。

問題の特定

提供されたコードの問題は、それぞれに対して複数の QApplication と QWebPages が作成されることに起因しています。 URLの取得。代わりに、それぞれの単一のインスタンスを使用し、WebPage がそのloadFinished シグナルに依存して後続の URL の内部処理をトリガーする必要があります。

解決策

次の改善により解決されます。問題:

  1. 1 つの QApplication と WebPage インスタンス: 冗長なインスタンス化を避けて、単一の QApplication と WebPage を作成します。
  2. 内部処理ループ:loadFinished 信号を利用して URL を順次フェッチし、Web ページ内に内部処理ループを実装します。
  3. カスタム HTML 処理: ユーザー定義のスロットを htmlReady 信号に接続し、HTML と各ページのロード後の URL 情報。

使用法

改善された Web ページの使用方法を示すコード例:

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 WebPage](https://doc.qt.io/qt-5/qwebenginepage.html)
  • [PyQt4 WebPage](https: //doc.qt.io/archives/qt-4.8/qwebpage.html)

以上がPyQt QWebPage を使用して複数の URL を効率的にスクレイピングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート