Scrape plusieurs URL avec PyQt QWebPage
QWebPage de PyQt fournit un moyen d'afficher des pages Web, ce qui le rend adapté au contenu chargé dynamiquement. Cependant, tenter plusieurs rendus peut entraîner des plantages ou un comportement inattendu.
Identification du problème
Le problème dans le code fourni provient de la création de plusieurs QApplications et QWebPages pour chaque Récupération d'URL. Au lieu de cela, une seule instance de chacun doit être utilisée, la page Web s'appuyant sur son signal loadFinished pour déclencher le traitement interne des URL suivantes.
Solution
Les améliorations suivantes concernent le problème :
Utilisation
Exemple de code montrant comment utiliser la page Web améliorée :
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_())
Références
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!