Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengikis Berbilang URL dengan Cekap Menggunakan PyQt QWebPage?

Bagaimana untuk Mengikis Berbilang URL dengan Cekap Menggunakan PyQt QWebPage?

Susan Sarandon
Susan Sarandonasal
2024-10-26 07:16:30284semak imbas

How to Efficiently Scrape Multiple URLs Using PyQt QWebPage?

Kokas berbilang URL dengan PyQt QWebPage

QWebPage PyQt menyediakan cara untuk memaparkan halaman web, menjadikannya sesuai untuk kandungan yang dimuatkan secara dinamik. Walau bagaimanapun, percubaan berbilang pemaparan mungkin mengakibatkan ranap sistem atau tingkah laku yang tidak dijangka.

Pengenalpastian Masalah

Isu dalam kod yang disediakan berpunca daripada penciptaan berbilang QApplications dan QWebPages untuk setiap Pengambilan URL. Sebaliknya, satu contoh setiap satu harus digunakan, dengan Halaman Web bergantung pada isyarat loadFinished untuk mencetuskan pemprosesan dalaman URL berikutnya.

Penyelesaian

Alamat penambahbaikan berikut masalahnya:

  1. Satu Contoh QApplication dan Halaman Web: Buat satu QApplication dan Halaman Web, mengelakkan instantiasi berlebihan.
  2. Gelung Pemprosesan Dalaman: Gunakan isyarat LoadFinished untuk mengambil URL secara berurutan, melaksanakan gelung pemprosesan dalaman dalam Halaman Web.
  3. Pemprosesan HTML Tersuai: Sambungkan slot yang ditentukan pengguna ke isyarat htmlSedia, yang mengeluarkan HTML dan Maklumat URL selepas setiap halaman dimuatkan.

Penggunaan

Kod contoh yang menunjukkan cara menggunakan Halaman Web yang dipertingkatkan:

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_())

Rujukan

  • [Halaman Web PyQt5](https://doc.qt.io/qt-5/qwebenginepage.html)
  • [Halaman Web PyQt4](https: //doc.qt.io/archives/qt-4.8/qwebpage.html)

Atas ialah kandungan terperinci Bagaimana untuk Mengikis Berbilang URL dengan Cekap Menggunakan PyQt QWebPage?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn