Rumah pembangunan bahagian belakang Tutorial Python Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat

Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat

Jun 22, 2023 am 09:41 AM
Akaun awam WeChat menganalisis. scrapy

Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat

WeChat ialah aplikasi media sosial yang popular sejak beberapa tahun kebelakangan ini, dan akaun awam yang beroperasi di dalamnya juga memainkan peranan yang sangat penting. Seperti yang kita sedia maklum, akaun awam WeChat adalah lautan maklumat dan pengetahuan, kerana setiap akaun awam boleh menerbitkan artikel, mesej grafik dan maklumat lain. Maklumat ini boleh digunakan secara meluas dalam banyak bidang, seperti laporan media, penyelidikan akademik, dsb.

Jadi, artikel ini akan memperkenalkan cara menggunakan rangka kerja Scrapy untuk merangkak dan menganalisis artikel akaun awam WeChat. Scrapy ialah rangka kerja perangkak web Python yang fungsi utamanya ialah perlombongan data dan carian maklumat. Oleh itu, Scrapy sangat boleh disesuaikan dan cekap.

  1. Pasang Scrapy dan cipta projek

Untuk menggunakan rangka kerja Scrapy untuk merangkak, anda perlu memasang Scrapy dan kebergantungan lain terlebih dahulu. Anda boleh menggunakan arahan pip untuk memasang Proses pemasangan adalah seperti berikut:

pip install scrapy
pip install pymongo
pip install mysql-connector-python
Salin selepas log masuk

Selepas memasang Scrapy, kita perlu menggunakan alat baris arahan Scrapy untuk mencipta projek. Perintahnya adalah seperti berikut:

scrapy startproject wechat
Salin selepas log masuk

Selepas melaksanakan arahan ini, Scrapy akan mencipta projek bernama "wechat" dan mencipta banyak fail dan direktori dalam direktori projek.

  1. Melaksanakan rangkak artikel akaun awam WeChat

Sebelum kami mula merangkak, kami perlu terlebih dahulu memahami format URL halaman artikel akaun awam WeChat. URL halaman artikel akaun awam WeChat biasa kelihatan seperti ini:

https://mp.weixin.qq.com/s?__biz=XXX&mid=XXX&idx=1&sn=XXX&chksm=XXX#wechat_redirect
Salin selepas log masuk

Antaranya, __biz mewakili ID akaun awam WeChat, pertengahan mewakili ID artikel, idx mewakili nombor siri artikel , sn mewakili tandatangan artikel dan chksm mewakili Pengesahan kandungan. Oleh itu, jika kami ingin merangkak semua artikel akaun rasmi tertentu, kami perlu mencari ID akaun rasmi dan menggunakannya untuk membina URL. Antaranya, biz_id ialah pengecam unik akaun rasmi.

Pertama, kami perlu menyediakan senarai yang mengandungi banyak ID akaun rasmi, kerana kami ingin merangkak artikel akaun rasmi ini. Pengumpulan ID boleh dicapai melalui pelbagai cara. Di sini, kami menggunakan senarai yang mengandungi beberapa ID ujian sebagai contoh:

biz_ids = ['MzU5MjcwMzA4MA==', 'MzI4MzMwNDgwMQ==', 'MzAxMTcyMzg2MA==']
Salin selepas log masuk

Seterusnya, kami perlu menulis Spider untuk merangkak semua artikel akaun awam tertentu. Di sini, kami menyerahkan nama dan ID akaun rasmi kepada Spider supaya kami boleh mengendalikan ID akaun rasmi yang berbeza.

import scrapy
import re

class WeChatSpider(scrapy.Spider):
    name = "wechat"
    allowed_domains = ["mp.weixin.qq.com"]
    
    def __init__(self, name=None, biz_id=None):
        super().__init__(name=name)
        self.start_urls = ['https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz={}==#wechat_redirect'.format(biz_id)]

    def parse(self, response):
        article_urls = response.xpath('//h4[1]/a/@href')
        for url in article_urls.extract():
            yield scrapy.Request(url, callback=self.parse_article)
        
        next_page = response.xpath('//a[@id="js_next"]/@href')
        if next_page:
            yield scrapy.Request(response.urljoin(next_page[0].extract()), callback=self.parse)
    
    def parse_article(self, response):
        url = response.url
        title = response.xpath('//h2[@class="rich_media_title"]/text()')
        yield {'url': url, 'title': title.extract_first().strip()}
Salin selepas log masuk

Fungsi utama Spider ialah menggunakan ID akaun rasmi yang diberikan untuk mengakses halaman utama akaun rasmi, dan kemudian melintasi setiap halaman secara rekursif untuk mengekstrak URL semua artikel. Selain itu, kaedah parse_article digunakan untuk mengekstrak URL dan tajuk artikel untuk pemprosesan seterusnya. Secara keseluruhan, labah-labah ini tidak begitu kompleks, tetapi kelajuan pengekstrakan adalah perlahan.

Akhir sekali, kita perlu memasukkan arahan berikut dalam Terminal untuk memulakan Spider:

scrapy crawl wechat -a biz_id=XXXXXXXX
Salin selepas log masuk

Begitu juga, kita juga boleh merangkak berbilang akaun rasmi, cuma nyatakan nama semua akaun rasmi dalam arahan Just ID:

scrapy crawl wechat -a biz_id=ID1,ID2,ID3
Salin selepas log masuk
  1. Menyimpan data artikel

Selepas merangkak artikel, kita perlu menyimpan tajuk dan URL artikel ke pangkalan data (seperti MongoDB, MySQL , dsb.). Di sini, kami akan menggunakan perpustakaan pymongo untuk menyimpan data yang dirangkak.

import pymongo

class MongoPipeline(object):
    collection_name = 'wechat'

    def __init__(self, mongo_uri, mongo_db):
        self.mongo_uri = mongo_uri
        self.mongo_db = mongo_db

    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            mongo_uri=crawler.settings.get('MONGO_URI'),
            mongo_db=crawler.settings.get('MONGO_DATABASE', 'items')
        )

    def open_spider(self, spider):
        self.client = pymongo.MongoClient(self.mongo_uri)
        self.db = self.client[self.mongo_db]

    def close_spider(self, spider):
        self.client.close()

    def process_item(self, item, spider):
        self.db[self.collection_name].insert_one(dict(item))
        return item
Salin selepas log masuk

Dalam Pipeline ini, kami menggunakan MongoDB sebagai bahagian belakang untuk menyimpan data. Kelas ini boleh diubah suai mengikut keperluan untuk menggunakan sistem pangkalan data lain.

Seterusnya, kami perlu mengkonfigurasi parameter berkaitan pangkalan data dalam fail settings.py:

MONGO_URI = 'mongodb://localhost:27017/'
MONGO_DATABASE = 'wechat'
ITEM_PIPELINES = {'myproject.pipelines.MongoPipeline': 300}
Salin selepas log masuk

Akhir sekali, kami memanggil Pipeline dalam Spider untuk menyimpan data ke dalam MongoDB:

class WeChatSpider(scrapy.Spider):
    name = "wechat"
    allowed_domains = ["mp.weixin.qq.com"]
    
    def __init__(self, name=None, biz_id=None):
        super().__init__(name=name)
        self.start_urls = ['https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz={}==#wechat_redirect'.format(biz_id)]

    def parse(self, response):
        article_urls = response.xpath('//h4[1]/a/@href')
        for url in article_urls.extract():
            yield scrapy.Request(url, callback=self.parse_article)
        
        next_page = response.xpath('//a[@id="js_next"]/@href')
        if next_page:
            yield scrapy.Request(response.urljoin(next_page[0].extract()), callback=self.parse)
            
    def parse_article(self, response):
        url = response.url
        title = response.xpath('//h2[@class="rich_media_title"]/text()')
        yield {'url': url, 'title': title.extract_first().strip()}

        pipeline = response.meta.get('pipeline')
        if pipeline:
            item = dict()
            item['url'] = url
            item['title'] = title.extract_first().strip()
            yield item
Salin selepas log masuk

Dalam kod di atas, response.meta.get('pipeline') digunakan untuk mendapatkan objek Pipeline yang kami tetapkan dalam Spider. Oleh itu, tambahkan kod berikut pada kod Spider untuk menyokong Pipeline:

yield scrapy.Request(url, callback=self.parse_article, meta={'pipeline': 1})
Salin selepas log masuk
  1. Analisis Data

Akhir sekali, kami akan menggunakan perpustakaan seperti Scrapy dan panda untuk Melaksanakan data analisis dan visualisasi.

Di sini kami akan mengekstrak data yang kami rangkak daripada MongoDB dan menyimpannya ke fail CSV. Selepas itu, kami boleh menggunakan panda untuk memproses dan menggambarkan fail CSV.

Berikut ialah proses pelaksanaan:

import pandas as pd
from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
db = client['wechat']
articles = db['wechat']

cursor = articles.find()
doc = list(cursor)

df = pd.DataFrame(doc)
df.to_csv('wechat.csv', encoding='utf-8')

df.groupby('biz_id')['title'].count().plot(kind='bar')
Salin selepas log masuk

Dalam kod di atas, kami menggunakan perpustakaan MongoDB dan Pandas untuk menyimpan data yang dirangkak ke dalam folder data fail CSV. Selepas itu, kami menggunakan fungsi analisis data Pandas yang berkuasa untuk memaparkan secara visual bilangan artikel bagi setiap akaun awam.

Atas ialah kandungan terperinci Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 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)

Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat Jun 22, 2023 am 09:41 AM

Scrapy melaksanakan rangkak artikel dan analisis akaun awam WeChat WeChat ialah aplikasi media sosial yang popular dalam beberapa tahun kebelakangan ini, dan akaun awam yang dikendalikan di dalamnya juga memainkan peranan yang sangat penting. Seperti yang kita sedia maklum, akaun awam WeChat adalah lautan maklumat dan pengetahuan, kerana setiap akaun awam boleh menerbitkan artikel, mesej grafik dan maklumat lain. Maklumat ini boleh digunakan secara meluas dalam banyak bidang, seperti laporan media, penyelidikan akademik, dsb. Jadi, artikel ini akan memperkenalkan cara menggunakan rangka kerja Scrapy untuk merangkak dan menganalisis artikel akaun awam WeChat. Scr

Kaedah pelaksanaan pemuatan asynchronous Scrapy berdasarkan Ajax Kaedah pelaksanaan pemuatan asynchronous Scrapy berdasarkan Ajax Jun 22, 2023 pm 11:09 PM

Scrapy ialah rangka kerja perangkak Python sumber terbuka yang boleh mendapatkan data daripada tapak web dengan cepat dan cekap. Walau bagaimanapun, banyak tapak web menggunakan teknologi pemuatan tak segerak Ajax, menjadikannya mustahil untuk Scrapy mendapatkan data secara langsung. Artikel ini akan memperkenalkan kaedah pelaksanaan Scrapy berdasarkan pemuatan tak segerak Ajax. 1. Prinsip pemuatan tak segerak Ajax Pemuatan tak segerak Ajax: Dalam kaedah pemuatan halaman tradisional, selepas pelayar menghantar permintaan kepada pelayan, ia mesti menunggu pelayan mengembalikan respons dan memuatkan keseluruhan halaman sebelum meneruskan ke langkah seterusnya.

Analisis kes buruk: Cara merangkak maklumat syarikat di LinkedIn Analisis kes buruk: Cara merangkak maklumat syarikat di LinkedIn Jun 23, 2023 am 10:04 AM

Scrapy ialah rangka kerja perangkak berasaskan Python yang boleh mendapatkan maklumat berkaitan dengan cepat dan mudah di Internet. Dalam artikel ini, kami akan menggunakan kes Scrapy untuk menganalisis secara terperinci cara merangkak maklumat syarikat di LinkedIn. Tentukan URL sasaran Mula-mula, kita perlu menjelaskan dengan jelas bahawa sasaran kita ialah maklumat syarikat di LinkedIn. Oleh itu, kita perlu mencari URL halaman maklumat syarikat LinkedIn. Buka laman web LinkedIn, masukkan nama syarikat dalam kotak carian, dan

Apakah perbezaan antara pensijilan akaun rasmi WeChat dan bukan pensijilan? Apakah perbezaan antara pensijilan akaun rasmi WeChat dan bukan pensijilan? Sep 19, 2023 pm 02:15 PM

Perbezaan antara pensijilan akaun rasmi WeChat dan bukan pensijilan terletak pada logo pensijilan, kebenaran fungsi, kekerapan tolak, kebenaran antara muka dan kepercayaan pengguna. Pengenalan terperinci: 1. Logo pensijilan akaun awam yang disahkan akan memperoleh logo pensijilan rasmi, iaitu logo V biru ini boleh meningkatkan kredibiliti dan kewibawaan akaun awam dan memudahkan pengguna mengenal pasti akaun awam rasmi yang sebenar ; 2. Keizinan fungsi Akaun awam yang diperakui mempunyai lebih banyak fungsi dan kebenaran daripada akaun awam yang diperakui Contohnya, akaun awam yang diperakui boleh memohon untuk mengaktifkan fungsi pembayaran WeChat untuk merealisasikan pembayaran dalam talian dan operasi komersial.

Petua pengoptimuman buruk: Cara mengurangkan rangkak URL pendua dan meningkatkan kecekapan Petua pengoptimuman buruk: Cara mengurangkan rangkak URL pendua dan meningkatkan kecekapan Jun 22, 2023 pm 01:57 PM

Scrapy ialah rangka kerja perangkak Python yang berkuasa yang boleh digunakan untuk mendapatkan sejumlah besar data daripada Internet. Walau bagaimanapun, apabila membangunkan Scrapy, kami sering menghadapi masalah merangkak URL pendua, yang membuang banyak masa dan sumber serta menjejaskan kecekapan. Artikel ini akan memperkenalkan beberapa teknik pengoptimuman Scrapy untuk mengurangkan rangkak URL pendua dan meningkatkan kecekapan perangkak Scrapy. 1. Gunakan atribut start_urls dan allowed_domains dalam perangkak Scrapy untuk

Menggunakan Selenium dan PhantomJS dalam perangkak Scrapy Menggunakan Selenium dan PhantomJS dalam perangkak Scrapy Jun 22, 2023 pm 06:03 PM

Menggunakan Selenium dan PhantomJSScrapy dalam perangkak Scrapy Scrapy ialah rangka kerja perangkak web yang sangat baik di bawah Python dan telah digunakan secara meluas dalam pengumpulan dan pemprosesan data dalam pelbagai bidang. Dalam pelaksanaan perangkak, kadangkala perlu untuk mensimulasikan operasi penyemak imbas untuk mendapatkan kandungan yang dibentangkan oleh tapak web tertentu Dalam kes ini, Selenium dan PhantomJS diperlukan. Selenium mensimulasikan operasi manusia pada penyemak imbas, membolehkan kami mengautomasikan ujian aplikasi web

Cara menggunakan Laravel untuk membangunkan sistem pesanan dalam talian berdasarkan akaun awam WeChat Cara menggunakan Laravel untuk membangunkan sistem pesanan dalam talian berdasarkan akaun awam WeChat Nov 02, 2023 am 09:42 AM

Cara menggunakan Laravel untuk membangunkan sistem pesanan dalam talian berdasarkan akaun rasmi WeChat Dengan penggunaan meluas akaun rasmi WeChat, semakin banyak syarikat mula menggunakannya sebagai saluran penting untuk pemasaran dalam talian. Dalam industri katering, membangunkan sistem pesanan dalam talian berdasarkan akaun awam WeChat boleh meningkatkan kecekapan dan jualan perusahaan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Laravel untuk membangunkan sistem sedemikian dan menyediakan contoh kod khusus. Penyediaan projek Pertama, anda perlu memastikan bahawa rangka kerja Laravel telah dipasang dalam persekitaran setempat. OK

Penggunaan Scrapy yang mendalam: Bagaimana untuk merangkak data HTML, XML dan JSON? Penggunaan Scrapy yang mendalam: Bagaimana untuk merangkak data HTML, XML dan JSON? Jun 22, 2023 pm 05:58 PM

Scrapy ialah rangka kerja perangkak Python yang berkuasa yang boleh membantu kami mendapatkan data di Internet dengan cepat dan fleksibel. Dalam proses merangkak sebenar, kami sering menghadapi pelbagai format data seperti HTML, XML dan JSON. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Scrapy untuk merangkak ketiga-tiga format data ini masing-masing. 1. Merangkak data HTML dan mencipta projek Scrapy Pertama, kita perlu membuat projek Scrapy. Buka baris arahan dan masukkan arahan berikut: scrapys

See all articles