国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 後端開發(fā) Python教學 Scrapy實現(xiàn)微信公眾號文章爬取與分析

Scrapy實現(xiàn)微信公眾號文章爬取與分析

Jun 22, 2023 am 09:41 AM
微信公眾號 分析。 scrapy

Scrapy實現(xiàn)微信公眾號文章爬取和分析

微信是近年來備受歡迎的社群媒體應用,在其中運作的公眾號也扮演著非常重要的角色。眾所周知,微信公眾號是一個資訊和知識的海洋,因為其中每個公眾號都可以發(fā)布文章、圖文訊息等資訊。這些資訊可以被廣泛地應用在許多領域中,例如媒體報道、學術研究等。

那麼,這篇文章將介紹如何使用Scrapy框架來實現(xiàn)微信公眾號文章的爬取與分析。 Scrapy是一個Python的網(wǎng)路爬蟲框架,主要功能是進行資料探勘和資訊查找。因此,Scrapy具有很好的可自訂性和高效性。

  1. 安裝Scrapy並建立專案

要使用Scrapy框架進行爬蟲,首先需要安裝Scrapy和其他相依性。可以使用pip指令進行安裝,安裝過程如下所示:

pip install scrapy
pip install pymongo
pip install mysql-connector-python

安裝Scrapy之後,我們需要使用Scrapy命令列工具來建立專案。指令如下:

scrapy startproject wechat

執(zhí)行指令後,Scrapy將會建立一個名為「wechat」的項目,並在專案目錄中建立許多檔案和目錄。

  1. 實作微信公眾號文章的爬取

在我們開始爬蟲之前,我們需要先搞懂微信公眾號文章頁的URL格式。一個典型的微信公眾號文章頁面的URL長這樣:

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

其中,__biz 表示微信公眾號的ID,mid 表示文章的ID,idx 表示文章的序號,sn 表示文章的簽名,chksm 表示內(nèi)容校驗。因此,如果我們要爬取某個公眾號的所有文章,就需要找到這個公眾號的ID,並用它來建構URL。其中,biz_id 是該公眾號的唯一識別。

首先,我們需要準備一個包含許多公眾號ID的列表,因為我們要爬取這些公眾號的文章。而ID的蒐集可以透過各種手段來實現(xiàn)。在這裡,我們使用一個包含幾個測試ID的列表作為例子:

biz_ids = ['MzU5MjcwMzA4MA==', 'MzI4MzMwNDgwMQ==', 'MzAxMTcyMzg2MA==']

#接著,我們需要寫一個Spider,來爬取某個公眾號的所有文章。這裡,我們將公眾號碼的名字和ID傳遞到Spider,以方便我們可以處理不同的公眾號碼ID。

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

Spider的主要功能是使用給定的公眾號ID來存取公眾號首頁,然後遞歸地遍歷每一頁,提取所有文章的URL。此外,parse_article方法用於提取文章的URL和標題,以進行後續(xù)處理??傮w而言,該Spider不是很複雜,但是提取速度較慢。

最後,我們需要在Terminal中輸入下面的命令來啟動Spider:

scrapy crawl wechat -a biz_id=XXXXXXXX

同樣,我們也可以爬取多個公眾號,只需要在命令中指定所有公眾號的ID即可:

scrapy crawl wechat -a biz_id=ID1,ID2,ID3
  1. 儲存文章資料

爬取文章之後,我們需要將文章的標題和URL儲存到資料庫(如MongoDB、MySQL等)。在這裡,我們將使用pymongo函式庫來保存爬取到的資料。

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

在該Pipeline中,我們使用了MongoDB作為儲存資料的後端??梢愿鶕?jù)需要修改這個類別來使用其他的資料庫系統(tǒng)。

接下來,我們需要在settings.py檔案中配置資料庫相關的參數(shù):

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

最後,我們在Spider中呼叫Pipeline,以將資料儲存到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

在上面的程式碼中,response.meta.get('pipeline')是用來取得我們在Spider中設定的Pipeline的物件的。因此,只需在Spider程式碼中加入以下程式碼,就可以支援Pipeline了:

yield scrapy.Request(url, callback=self.parse_article, meta={'pipeline': 1})
  1. #資料分析

最後,我們將使用Scrapy和pandas等函式庫來實現(xiàn)數(shù)據(jù)的分析和視覺化。

在這裡,我們將從MongoDB中提取我們爬取到的數(shù)據(jù),並將其保存到CSV檔案中。隨後,我們可以使用pandas來對CSV檔案進行處理,並進行視覺化。

以下是實作過程:

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')

以上程式碼中,我們使用了 MongoDB 和 Pandas 函式庫來將爬取到的資料儲存到 CSV 檔案的 data 資料夾內(nèi)。隨後,我們使用 Pandas 強大的數(shù)據(jù)分析功能將每個公眾號的文章數(shù)量進行了視覺化展示。

以上是Scrapy實現(xiàn)微信公眾號文章爬取與分析的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Scrapy實現(xiàn)微信公眾號文章爬取與分析 Scrapy實現(xiàn)微信公眾號文章爬取與分析 Jun 22, 2023 am 09:41 AM

Scrapy實現(xiàn)微信公眾號文章爬取和分析微信是近年來備受歡迎的社群媒體應用,在其中運作的公眾號也扮演著非常重要的角色。眾所周知,微信公眾號是一個資訊和知識的海洋,因為其中每個公眾號都可以發(fā)布文章、圖文訊息等資訊。這些資訊可以被廣泛地應用在許多領域中,例如媒體報道、學術研究等。那麼,本篇文章將介紹如何使用Scrapy框架來實現(xiàn)微信公眾號文章的爬取與分析。 Scr

Scrapy基於Ajax非同步載入實作方法 Scrapy基於Ajax非同步載入實作方法 Jun 22, 2023 pm 11:09 PM

Scrapy是一個開源的Python爬蟲框架,它可以快速且有效率地從網(wǎng)站上取得資料。然而,許多網(wǎng)站採用了Ajax非同步載入技術,使得Scrapy無法直接取得資料。本文將介紹基於Ajax非同步載入的Scrapy實作方法。一、Ajax非同步載入原理Ajax非同步載入:在傳統(tǒng)的頁面載入方式中,瀏覽器發(fā)送請求到伺服器後,必須等待伺服器回傳回應並將頁面全部載入完畢才能進行下一步操

微信公眾號認證和不認證有哪些差別 微信公眾號認證和不認證有哪些差別 Sep 19, 2023 pm 02:15 PM

微信公眾號認證和不認證的差異在認證識別、功能權限、推播頻率、介面權限和使用者信任度等方面。詳細介紹:1、認證標識,認證公眾號會獲得官方頒發(fā)的認證標識,即藍色V標誌,這個標誌可以增加公眾號的可信度和權威性,讓用戶更容易辨別真實的官方公眾號; 2、功能權限,認證公眾號相比未認證的公眾號擁有更多的功能和權限,例如認證公眾號可以申請開通微信支付功能,實現(xiàn)在線支付和商業(yè)化運營等等。

Scrapy案例解析:如何抓取LinkedIn上公司訊息 Scrapy案例解析:如何抓取LinkedIn上公司訊息 Jun 23, 2023 am 10:04 AM

Scrapy是一個基於Python的爬蟲框架,可以快速且方便地獲取網(wǎng)路上的相關資訊。在本篇文章中,我們將透過Scrapy案例來詳細解析如何抓取LinkedIn上的公司資訊。確定目標URL首先,我們需要明確我們的目標是LinkedIn上的公司資訊。因此,我們需要找到LinkedIn公司資訊頁面的URL。開啟LinkedIn網(wǎng)站,在搜尋框中輸入公司名稱,在

Scrapy優(yōu)化技巧:如何減少重複URL的爬取,提高效率 Scrapy優(yōu)化技巧:如何減少重複URL的爬取,提高效率 Jun 22, 2023 pm 01:57 PM

Scrapy是一個功能強大的Python爬蟲框架,可用於從網(wǎng)路上取得大量的資料。但是,在進行Scrapy開發(fā)時,經(jīng)常會遇到重複URL的爬取問題,這會浪費大量的時間和資源,影響效率。本文將介紹一些Scrapy優(yōu)化技巧,減少重複URL的爬取,提升Scrapy爬蟲的效率。一、使用start_urls和allowed_domains屬性在Scrapy爬蟲中,可

在Scrapy爬蟲中使用Selenium和PhantomJS 在Scrapy爬蟲中使用Selenium和PhantomJS Jun 22, 2023 pm 06:03 PM

在Scrapy爬蟲中使用Selenium和PhantomJSScrapy是Python下的一個優(yōu)秀的網(wǎng)路爬蟲框架,已經(jīng)被廣泛應用於各個領域中的資料收集和處理。在爬蟲的實作中,有時候需要模擬瀏覽器操作去取得某些網(wǎng)站呈現(xiàn)的內(nèi)容,這時候就需要用到Selenium和PhantomJS。 Selenium是模擬人類對瀏覽器的操作,讓我們可以自動化地進行網(wǎng)頁應用程式測試

深度使用Scrapy:如何爬取HTML、XML、JSON資料? 深度使用Scrapy:如何爬取HTML、XML、JSON資料? Jun 22, 2023 pm 05:58 PM

Scrapy是一款強大的Python爬蟲框架,可以幫助我們快速、靈活地取得網(wǎng)路上的資料。在實際爬取過程中,我們會經(jīng)常遇到HTML、XML、JSON等各種資料格式。在這篇文章中,我們將介紹如何使用Scrapy分別爬取這三種資料格式的方法。一、爬取HTML資料建立Scrapy專案首先,我們需要建立一個Scrapy專案。打開命令列,輸入以下命令:scrapys

如何使用Scrapy爬取豆瓣圖書及其評分和評論? 如何使用Scrapy爬取豆瓣圖書及其評分和評論? Jun 22, 2023 am 10:21 AM

隨著網(wǎng)路的發(fā)展,人們越來越依賴網(wǎng)路來獲取資訊。而對於圖書愛好者而言,豆瓣圖書已經(jīng)成為了一個不可或缺的平臺。並且,豆瓣圖書也提供了豐富的圖書評分和評論,使讀者能夠更全面地了解一本圖書。但是,手動取得這些資訊無異於大海撈針,這時候,我們可以藉助Scrapy工具進行資料爬取。 Scrapy是一個基於Python的開源網(wǎng)路爬蟲框架,它可以幫助我們有效率地

See all articles