PyQt QWebPage で複数の URL をスクレイピングする
PyQt の QWebPage は、Web ページをレンダリングする手段を提供し、動的に読み込まれるコンテンツに適しています。ただし、複数のレンダリングを試行すると、クラッシュや予期しない動作が発生する可能性があります。
問題の特定
提供されたコードの問題は、それぞれに対して複数の QApplication と QWebPages が作成されることに起因しています。 URLの取得。代わりに、それぞれの単一のインスタンスを使用し、WebPage がそのloadFinished シグナルに依存して後続の 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_())
参考資料
以上がPyQt QWebPage を使用して複数の URL を効率的にスクレイピングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。