使用 PyQt QWebPage 抓取多个 URL
PyQt 的 QWebPage 提供了一种渲染网页的方法,使其适合动态加载的内容。但是,尝试多次渲染可能会导致崩溃或意外行为。
问题识别
所提供代码中的问题源于为每个应用程序创建多个 QApplication 和 QWebPage网址获取。相反,应该使用每个实例的单个实例,网页依靠其 loadFinished 信号来触发后续 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_())
参考文献
以上是如何使用 PyQt QWebPage 高效地抓取多个 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!