Rumah pembangunan bahagian belakang Tutorial Python python使用rabbitmq实现网络爬虫示例

python使用rabbitmq实现网络爬虫示例

Jun 06, 2016 am 11:29 AM
rabbitmq perangkak web

编写tasks.py

代码如下:


from celery import Celery
from tornado.httpclient import HTTPClient
app = Celery('tasks')
app.config_from_object('celeryconfig')
@app.task
def get_html(url):
    http_client = HTTPClient()
    try:
        response = http_client.fetch(url,follow_redirects=True)
        return response.body
    except httpclient.HTTPError as e:
        return None
    http_client.close()

编写celeryconfig.py

代码如下:


CELERY_IMPORTS = ('tasks',)
BROKER_URL = 'amqp://guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://'

编写spider.py

代码如下:


from tasks import get_html
from queue import Queue
from bs4 import BeautifulSoup
from urllib.parse import urlparse,urljoin
import threading
class spider(object):
    def __init__(self):
        self.visited={}
        self.queue=Queue()
    def process_html(self, html):
        pass
        #print(html)
    def _add_links_to_queue(self,url_base,html):
        soup = BeautifulSoup(html)
        links=soup.find_all('a')
        for link in links:
            try:
                url=link['href']
            except:
                pass
            else:
                url_com=urlparse(url)
                if not url_com.netloc:
                    self.queue.put(urljoin(url_base,url))
                else:
                    self.queue.put(url_com.geturl())
    def start(self,url):
        self.queue.put(url)
        for i in range(20):
            t = threading.Thread(target=self._worker)
            t.daemon = True
            t.start()
        self.queue.join()
    def _worker(self):
        while 1:
            url=self.queue.get()
            if url in self.visited:
                continue
            else:
                result=get_html.delay(url)
                try:
                    html=result.get(timeout=5)
                except Exception as e:
                    print(url)
                    print(e)
                self.process_html(html)
                self._add_links_to_queue(url,html)

                self.visited[url]=True
                self.queue.task_done()
s=spider()
s.start("http://www.bitsCN.com/")

由于html中某些特殊情况的存在,程序还有待完善。

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan RabbitMQ untuk melaksanakan pemprosesan mesej teragih dalam PHP Cara menggunakan RabbitMQ untuk melaksanakan pemprosesan mesej teragih dalam PHP Jul 18, 2023 am 11:00 AM

Cara menggunakan RabbitMQ untuk melaksanakan pemprosesan mesej teragih dalam PHP Pengenalan: Dalam pembangunan aplikasi berskala besar, sistem teragih telah menjadi keperluan biasa. Pemprosesan mesej teragih ialah corak yang meningkatkan kecekapan dan kebolehpercayaan sistem dengan mengagihkan tugas kepada berbilang nod pemprosesan. RabbitMQ ialah sistem baris gilir mesej sumber terbuka yang boleh dipercayai yang menggunakan protokol AMQP untuk melaksanakan penghantaran dan pemprosesan mesej. Dalam artikel ini kami akan membincangkan cara menggunakan RabbitMQ dalam PHP untuk pengedaran

Cara membina aplikasi pemesejan yang boleh dipercayai dengan React dan RabbitMQ Cara membina aplikasi pemesejan yang boleh dipercayai dengan React dan RabbitMQ Sep 28, 2023 pm 08:24 PM

Cara membina aplikasi pemesejan yang boleh dipercayai dengan React dan RabbitMQ Pengenalan: Aplikasi moden perlu menyokong pemesejan yang boleh dipercayai untuk mencapai ciri seperti kemas kini masa nyata dan penyegerakan data. React ialah perpustakaan JavaScript yang popular untuk membina antara muka pengguna, manakala RabbitMQ ialah perisian tengah pemesejan yang boleh dipercayai. Artikel ini akan memperkenalkan cara menggabungkan React dan RabbitMQ untuk membina aplikasi pemesejan yang boleh dipercayai dan memberikan contoh kod khusus. Gambaran keseluruhan RabbitMQ:

Cara membina aplikasi perangkak web yang berkuasa menggunakan React dan Python Cara membina aplikasi perangkak web yang berkuasa menggunakan React dan Python Sep 26, 2023 pm 01:04 PM

Cara membina aplikasi perangkak web yang berkuasa menggunakan React dan Python Pengenalan: Perangkak web ialah program automatik yang digunakan untuk merangkak data web melalui Internet. Dengan pembangunan berterusan Internet dan pertumbuhan data yang pesat, perangkak web menjadi semakin popular. Artikel ini akan memperkenalkan cara menggunakan React dan Python, dua teknologi popular, untuk membina aplikasi perangkak web yang berkuasa. Kami akan meneroka kelebihan React sebagai rangka kerja hadapan dan Python sebagai enjin perangkak, dan memberikan contoh kod khusus. 1. Untuk

Penyelesaian untuk penyegerakan data masa nyata antara Golang dan RabbitMQ Penyelesaian untuk penyegerakan data masa nyata antara Golang dan RabbitMQ Sep 27, 2023 pm 10:41 PM

Pengenalan kepada penyelesaian untuk penyegerakan data masa nyata antara Golang dan RabbitMQ: Pada era hari ini, dengan populariti Internet dan pertumbuhan pesat volum data, penyegerakan data masa nyata telah menjadi semakin penting. Untuk menyelesaikan masalah penghantaran data tak segerak dan penyegerakan data, banyak syarikat telah mula menggunakan baris gilir mesej untuk mencapai penyegerakan data masa nyata. Artikel ini akan memperkenalkan penyelesaian penyegerakan data masa nyata berdasarkan Golang dan RabbitMQ dan memberikan contoh kod khusus. 1. Apakah RabbitMQ? Rabbi

Golang RabbitMQ: Reka bentuk seni bina dan pelaksanaan sistem baris gilir mesej yang sangat tersedia Golang RabbitMQ: Reka bentuk seni bina dan pelaksanaan sistem baris gilir mesej yang sangat tersedia Sep 28, 2023 am 08:18 AM

GolangRabbitMQ: Reka bentuk seni bina dan pelaksanaan sistem baris gilir mesej yang sangat tersedia memerlukan contoh kod khusus Pengenalan: Dengan pembangunan berterusan teknologi Internet dan aplikasinya yang meluas, baris gilir mesej telah menjadi bahagian yang amat diperlukan dalam sistem perisian moden. Sebagai alat untuk melaksanakan penyahgandingan, komunikasi tak segerak, pemprosesan toleransi kesalahan dan fungsi lain, baris gilir mesej menyediakan ketersediaan tinggi dan sokongan berskala untuk sistem teragih. Sebagai bahasa pengaturcaraan yang cekap dan ringkas, Golang digunakan secara meluas untuk membina sistem keselarasan tinggi dan berprestasi tinggi.

Bangunkan perangkak web dan alat pengikis data yang cekap menggunakan bahasa Vue.js dan Perl Bangunkan perangkak web dan alat pengikis data yang cekap menggunakan bahasa Vue.js dan Perl Jul 31, 2023 pm 06:43 PM

Gunakan bahasa Vue.js dan Perl untuk membangunkan perangkak web dan alat mengikis data yang cekap Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet dan kepentingan data yang semakin meningkat, permintaan untuk perangkak web dan alat pengikis data juga telah meningkat. Dalam konteks ini, adalah pilihan yang baik untuk menggabungkan bahasa Vue.js dan Perl untuk membangunkan perangkak web dan alat mengikis data yang cekap. Artikel ini akan memperkenalkan cara membangunkan alat sedemikian menggunakan bahasa Vue.js dan Perl, serta melampirkan contoh kod yang sepadan. 1. Pengenalan kepada bahasa Vue.js dan Perl

Nota kajian PHP: perangkak web dan pengumpulan data Nota kajian PHP: perangkak web dan pengumpulan data Oct 08, 2023 pm 12:04 PM

Nota kajian PHP: Perangkak web dan pengumpulan data Pengenalan: Perangkak web ialah alat yang secara automatik merangkak data daripada Internet Ia boleh mensimulasikan tingkah laku manusia, menyemak imbas halaman web dan mengumpul data yang diperlukan. Sebagai bahasa skrip sebelah pelayan yang popular, PHP juga memainkan peranan penting dalam bidang perangkak web dan pengumpulan data. Artikel ini akan menerangkan cara menulis perangkak web menggunakan PHP dan memberikan contoh kod praktikal. 1. Prinsip asas perangkak web Prinsip asas perangkak web adalah untuk menghantar permintaan HTTP, menerima dan menghuraikan respons H pelayan.

Apakah teknologi yang biasa digunakan untuk perangkak web? Apakah teknologi yang biasa digunakan untuk perangkak web? Nov 10, 2023 pm 05:44 PM

Teknologi yang biasa digunakan untuk perangkak web termasuk teknologi perangkak terfokus, strategi rangkak berdasarkan penilaian pautan, strategi rangkak berdasarkan penilaian kandungan, teknologi rangkak terfokus, dsb. Pengenalan terperinci: 1. Teknologi perangkak terfokus ialah perangkak web bertema yang menambah modul penilaian pautan dan penilaian kandungan Perkara utama strategi rangkaknya ialah menilai kandungan halaman dan kepentingan pautan 2. Gunakan halaman Web sebagai separa berstruktur dokumen, yang mempunyai Banyak maklumat struktur boleh digunakan untuk menilai kepentingan pautan 3. Strategi merangkak berdasarkan penilaian kandungan, dsb.

See all articles