ホームページ バックエンド開発 Python チュートリアル Scrapy は WeChat パブリック アカウント記事のクロールと分析を実装します

Scrapy は WeChat パブリック アカウント記事のクロールと分析を実装します

Jun 22, 2023 am 09:41 AM
WeChatの公開アカウント 分析する。 scrapy

Scrapy は WeChat パブリックアカウント記事のクロールと分析を実装します

WeChat は近年非常に人気のあるソーシャル メディア アプリケーションであり、そこで運用されるパブリック アカウントも非常に重要な役割を果たしています。誰もが知っているように、WeChat の公開アカウントは記事、グラフィック メッセージ、その他の情報を公開できるため、情報と知識の海です。この情報は、メディア報道、学術研究など、さまざまな分野で広く使用できます。

そこで、この記事では、Scrapy フレームワークを使用して WeChat パブリック アカウントの記事をクロールおよび分析する方法を紹介します。 Scrapy は、主な機能がデータ マイニングと情報検索である Python Web クローラー フレームワークです。したがって、Scrapy は非常にカスタマイズ可能で効率的です。

  1. Scrapy をインストールしてプロジェクトを作成する

Scrapy フレームワークをクロールに使用するには、まず Scrapy とその他の依存関係をインストールする必要があります。 pip コマンドを使用してインストールできます。インストール プロセスは次のとおりです:

pip install scrapy
pip install pymongo
pip install mysql-connector-python
ログイン後にコピー

Scrapy をインストールした後、Scrapy コマンド ライン ツールを使用してプロジェクトを作成する必要があります。コマンドは次のとおりです:

scrapy startproject wechat
ログイン後にコピー

このコマンドを実行すると、Scrapy は「wechat」という名前のプロジェクトを作成し、プロジェクト ディレクトリ内に多くのファイルとディレクトリを作成します。

  1. WeChat パブリック アカウントの記事のクロールを実装する

クロールを開始する前に、まず WeChat パブリック アカウントの記事ページの URL 形式を理解する必要があります。一般的な WeChat パブリック アカウントの記事ページの URL は次のようになります。

https://mp.weixin.qq.com/s?__biz=XXX&mid=XXX&idx=1&sn=XXX&chksm=XXX#wechat_redirect
ログイン後にコピー

このうち、__biz は WeChat パブリック アカウントの ID、mid は記事の ID、idx は記事のシリアル番号を表します。 、sn は記事の署名を表し、chksm はコンテンツ検証を表します。したがって、特定の公式アカウントのすべての記事をクロールしたい場合は、公式アカウントの ID を見つけて、それを使用して URL を構築する必要があります。このうち、biz_idは公式アカウントの一意の識別子です。

まず、公式アカウントの記事をクロールしたいので、多数の公式アカウントIDを含むリストを用意する必要があります。 ID の収集はさまざまな手段で行うことができます。ここでは、例として複数のテスト ID を含むリストを使用します。

biz_ids = ['MzU5MjcwMzA4MA==', 'MzI4MzMwNDgwMQ==', 'MzAxMTcyMzg2MA==']
ログイン後にコピー

次に、特定の公開アカウントのすべての記事をクロールするスパイダーを作成する必要があります。ここでは、公式アカウントの名前と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 とタイトルを抽出します。全体として、このスパイダーはそれほど複雑ではありませんが、抽出速度は遅いです。

最後に、ターミナルで次のコマンドを入力して 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
ログイン後にコピー

このパイプラインでは、データを保存するバックエンドとして MongoDB を使用します。このクラスは、他のデータベース システムを使用するために必要に応じて変更できます。

次に、settings.py ファイルでデータベース関連のパラメーターを構成する必要があります:

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 コードに追加するだけです:

yield scrapy.Request(url, callback=self.parse_article, meta={'pipeline': 1})
ログイン後にコピー
  1. データ分析

最後に、Scrapy や pandas などのライブラリを使用してデータを実装します。分析と可視化。

ここでは、MongoDB からクロールしたデータを抽出し、CSV ファイルに保存します。その後、パンダを使用して 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 ファイルのデータ フォルダーに保存します。次に、Pandas の強力なデータ分析機能を使用して、各公開アカウントの記事数を視覚的に表示しました。

以上がScrapy は WeChat パブリック アカウント記事のクロールと分析を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Scrapy は WeChat パブリック アカウント記事のクロールと分析を実装します Scrapy は WeChat パブリック アカウント記事のクロールと分析を実装します Jun 22, 2023 am 09:41 AM

Scrapy は記事のクローリングと WeChat パブリックアカウントの分析を実装します 近年人気のソーシャルメディアアプリケーションである WeChat で運用されているパブリックアカウントも非常に重要な役割を果たしています。誰もが知っているように、WeChat の公開アカウントは記事、グラフィック メッセージ、その他の情報を公開できるため、情報と知識の海です。この情報は、メディア報道、学術研究など、さまざまな分野で広く使用できます。そこで、この記事では、Scrapy フレームワークを使用して WeChat パブリック アカウントの記事をクロールおよび分析する方法を紹介します。 Scr

AjaxベースのScrapy非同期読み込み実装方法 AjaxベースのScrapy非同期読み込み実装方法 Jun 22, 2023 pm 11:09 PM

Scrapy は、Web サイトからデータを迅速かつ効率的に取得できるオープンソースの Python クローラー フレームワークです。ただし、多くの Web サイトでは Ajax 非同期読み込みテクノロジーが使用されているため、Scrapy がデータを直接取得することはできません。この記事では、Ajax 非同期読み込みをベースとした Scrapy の実装方法を紹介します。 1. Ajax 非同期ロードの原則 Ajax 非同期ロード: 従来のページロード方法では、ブラウザがサーバーにリクエストを送信した後、サーバーが応答を返してページ全体をロードするまで待ってから、次のステップに進む必要があります。

悪質なケース分析: LinkedIn で企業情報をクロールする方法 悪質なケース分析: LinkedIn で企業情報をクロールする方法 Jun 23, 2023 am 10:04 AM

Scrapy は、インターネット上の関連情報を迅速かつ簡単に取得できる Python ベースのクローラー フレームワークです。この記事では、Scrapy のケースを使用して、LinkedIn で企業情報をクロールする方法を詳細に分析します。ターゲット URL を決定する まず、ターゲットが LinkedIn 上の企業情報であることを明確にする必要があります。したがって、LinkedIn の企業情報ページの URL を見つける必要があります。 LinkedIn Web サイトを開き、検索ボックスに会社名を入力し、

WeChat公式アカウント認証と非認証の違いは何ですか? WeChat公式アカウント認証と非認証の違いは何ですか? Sep 19, 2023 pm 02:15 PM

WeChat パブリック アカウント認証と非認証の違いは、認証ロゴ、機能権限、プッシュ頻度、インターフェイス権限、およびユーザーの信頼にあります。詳細な紹介: 1. 認証ロゴ. 認証されたパブリック アカウントは、青い V ロゴである公式認証ロゴを取得します. このロゴは、パブリック アカウントの信頼性と権威を高め、ユーザーが本物の公式パブリック アカウントを識別しやすくします。 ; 2. 機能の権限: 認証されたパブリック アカウントには、非認証のパブリック アカウントよりも多くの機能と権限があります。たとえば、認証されたパブリック アカウントは、オンライン決済や商用操作などを実現するための WeChat 支払い機能の有効化を申請できます。

Scrapy 最適化のヒント: 重複 URL のクロールを減らし、効率を向上させる方法 Scrapy 最適化のヒント: 重複 URL のクロールを減らし、効率を向上させる方法 Jun 22, 2023 pm 01:57 PM

Scrapy は、インターネットから大量のデータを取得するために使用できる強力な Python クローラー フレームワークです。ただし、Scrapy を開発する場合、重複した URL をクロールするという問題が頻繁に発生します。これは、多くの時間とリソースを無駄にし、効率に影響を与えます。この記事では、重複 URL のクロールを減らし、Scrapy クローラーの効率を向上させるための Scrapy 最適化テクニックをいくつか紹介します。 1. Scrapy クローラーの start_urls 属性と allowed_domains 属性を使用して、

Scrapy クローラーでの Selenium と PhantomJS の使用 Scrapy クローラーでの Selenium と PhantomJS の使用 Jun 22, 2023 pm 06:03 PM

Scrapy クローラーでの Selenium と PhantomJS の使用 Scrapy は、Python 上の優れた Web クローラー フレームワークであり、さまざまな分野のデータ収集と処理に広く使用されています。クローラーの実装では、特定の Web サイトが提供するコンテンツを取得するためにブラウザーの操作をシミュレートする必要がある場合があり、この場合には Selenium と PhantomJS が必要になります。 Selenium はブラウザ上で人間の操作をシミュレートし、Web アプリケーションのテストを自動化します。

Laravel を使用して WeChat パブリック アカウントに基づいたオンライン注文システムを開発する方法 Laravel を使用して WeChat パブリック アカウントに基づいたオンライン注文システムを開発する方法 Nov 02, 2023 am 09:42 AM

Laravel を使用して WeChat 公式アカウントをベースにしたオンライン注文システムを開発する方法 WeChat 公式アカウントの普及に伴い、ますます多くの企業がオンライン マーケティングの重要なチャネルとして使用し始めています。ケータリング業界では、WeChat パブリック アカウントに基づいたオンライン注文システムを開発することで、企業の効率と売上を向上させることができます。この記事では、Laravel フレームワークを使用してそのようなシステムを開発する方法と、具体的なコード例を紹介します。プロジェクトの準備 まず、Laravel フレームワークがローカル環境にインストールされていることを確認する必要があります。わかりました

Scrapy の詳細な使用法: HTML、XML、および JSON データをクロールする方法? Scrapy の詳細な使用法: HTML、XML、および JSON データをクロールする方法? Jun 22, 2023 pm 05:58 PM

Scrapy は、インターネット上のデータを迅速かつ柔軟に取得するのに役立つ強力な Python クローラー フレームワークです。実際のクローリングのプロセスでは、HTML、XML、JSON などのさまざまなデータ形式に遭遇することがよくあります。この記事では、Scrapyを使用してこれら3つのデータ形式をそれぞれクロールする方法を紹介します。 1. HTML データをクロールして Scrapy プロジェクトを作成する まず、Scrapy プロジェクトを作成する必要があります。コマンドラインを開き、次のコマンドを入力します:scrapys

See all articles