weiboSpider - Sina Weiboクローラー、Pythonを使用してSinaWeiboデータをクロールします

(新浪微博爬虫,用python爬取新浪微博数据)

Created at: 2016-03-25 09:41:11
Language: Python

ビルドステータス Python PyPI

Weiboスパイダー

このプログラムは、 1以上のSina Weiboユーザー(Hu GeDi LiebaGuo Bitingなど)のデータを継続的にクロールし、結果情報をファイルまたはデータベースに書き込むことができます。書かれた情報には、ユーザー情報Weibo情報の2つのカテゴリを含む、ユーザーのWeiboのほぼすべてのデータが含まれます。内容が多すぎるため、ここでは繰り返しません。詳しくは、取得したフィールドをご覧ください。ユーザー情報のみが必要な場合は、Weiboユーザー情報のみをクロールするように関数を設定できます。このプログラムはWeiboのアクセス権を取得するためにCookieを設定する必要があります。Cookieの取得方法については後で説明します。クッキーを設定したくない場合は、同様に機能するクッキーフリーバージョンを使用できます。

具体的な書き込みファイルの種類は次のとおりです。

  • txtファイルに書き込む(デフォルト)
  • csvファイルへの書き込み(デフォルト)
  • jsonファイルの書き込み(オプション)
  • MySQLデータベースへの書き込み(オプション)
  • MongoDBデータベースへの書き込み(オプション)
  • SQLiteデータベースへの書き込み(オプション)
  • ユーザーが生成したツイートから元の画像をダウンロードする(オプション)
  • ユーザーが再投稿したWeiboの元の画像をダウンロードします(Cookieなしのバージョンのみ
  • ユーザーが生成したツイートからビデオをダウンロードする(オプション)
  • ユーザーが再投稿したWeiboのビデオをダウンロードします(Cookieなしのバージョンのみ
  • ユーザーが作成したWeiboLivePhotoからビデオをダウンロードする(Cookieなしのバージョンのみ
  • ユーザーが再投稿したWeiboLivePhotoビデオをダウンロードします(Cookieなしのバージョンのみ

コンテンツリスト

得られたフィールド

この部分は、クロールされたフィールド情報の説明です。Cookieを使用しないバージョンと区別するために、両方によってクロールされた情報を以下に示します。情報がCookieのないバージョンに固有である場合、Cookieのないマークが付けられ、マークされていない情報は2人が共有する情報です。

ユーザー情報

  • ユーザーID:「1669879400」などのWeiboユーザーID、実際、このフィールドは元々既知のフィールドです
  • ニックネーム:「Dear-Dilraba」などのユーザーのニックネーム
  • 性別:Weiboユーザーの性別
  • 誕生日:ユーザーの生年月日
  • 場所:ユーザーがいる場所
  • 学習経験:ユーザーが学校にいたときの学校の名前と時間
  • 実務経験:ユーザーの会社名と時間
  • サンシャインクレジット(Cookieフリーバージョン):ユーザーのサンシャインクレジット
  • Weibo登録時間(Cookieなしバージョン):ユーザーのWeibo登録日
  • マイクロブログの数:ユーザーのマイクロブログの総数(再投稿されたマイクロブログ+元のマイクロブログ)
  • フォロワー:ユーザーがフォローしているマイクロブログの数
  • フォロワー数:ユーザーのフォロワー数
  • はじめに:ユーザープロファイル
  • ホームページアドレス(Cookieなしバージョン):WeiboモバイルホームページのURL
  • アバターのURL(Cookieなしのバージョン):ユーザーのアバターのURL
  • HDアバターのURL(Cookieなしのバージョン):ユーザーのHDアバターのURL
  • Weiboレベル(Cookieなしバージョン):ユーザーWeiboレベル
  • メンバーシップレベル(Cookieフリーバージョン):Weiboメンバーユーザーレベル、通常ユーザーのレベルは0です
  • 認証するかどうか(Cookieなしのバージョン):ユーザーが認証されるかどうか、ブール型
  • 認証タイプ(Cookieなしバージョン):個人認証、企業認証、政府認証などのユーザー認証タイプ。
  • 認証情報:ユーザー情報バーに表示される認証情報は、認証されたユーザーに固有のものです。

Weibo情報

  • Weibo id:Weiboのユニークなロゴ
  • Weiboコンテンツ:Weiboテキスト
  • ヘッドライン記事のURL:Weiboのヘッドライン記事のURL。Weiboにヘッドライン記事がない場合、値は''です。
  • 元の画像のURL:元のWeibo画像とWeibo転送を転送する理由の画像のURL。Weiboに複数の画像がある場合、各URLは英語のカンマで区切られます。画像がない場合、値は次のようになります。 "なし"
  • ビデオURL:WeiboのビデオURL。Weiboにビデオがない場合、値は「none」です。
  • Weiboの投稿場所:Weiboの場所での投稿場所
  • Weiboリリース時間:Weiboがリリースされた時刻。正確に分単位で
  • いいね:Weiboのいいねの数
  • リツイート:Weiboの再投稿の数
  • コメント:Weiboへのコメント数
  • Weiboパブリッシングツール:iPhoneクライアント、HUAWEI Mate20ProなどのWeiboパブリッシングツール。
  • 結果ファイル:現在のディレクトリweiboフォルダの下のuser nicknameという名前のフォルダに保存します。名前は、「user_id.csv」および「user_id.txt」の形式です。
  • Weiboの写真:元のWeiboの写真と、Weiboを転送する理由の写真は、ユーザーのニックネームにちなんで名付けられたフォルダーの下のimgフォルダーに保存されます。
  • Weiboビデオ:元のWeiboのビデオで、ユーザーのニックネームにちなんで名付けられたフォルダーの下のビデオフォルダーに保存されます
  • Weibo入札(Cookieフリーバージョン):Cookieフリーバージョンに固有であり、このプログラムのWeiboidと同じ値です。
  • トピック(Cookieなしバージョン):Weiboトピック、つまり2つの#のコンテンツ。複数のトピックがある場合、各URLは英語のコンマで区切られます。トピックがない場合、値は''です。
  • @User(Cookieなしのバージョン):Weibo @のユーザー。複数の@ユーザーがいる場合、各URLは英語のコンマで区切られます。そうでない場合、値は''です。
  • オリジナルWeibo(Cookieフリーバージョン):Weiboの転送に固有です。Weiboの転送で転送されたWeiboです。Weiboコンテンツなど。

プログラムの具体的な実行結果を知りたい場合は、サンプルドキュメントを確認してください。このドキュメントには、 Dilireba Weiboのクロールの例が紹介されており、結果ファイルのスクリーンショットがいくつか添付されています。

動作環境

  • 開発言語:python2 / python3
  • システム:Windows / Linux / macOS

使用説明書

0.バージョン

このプログラムには2つのバージョンがあります。現在表示されているバージョンはpython3バージョンで、もう1つはpython2バージョンです。python2バージョンはpython2ブランチにあります。現在、新しい関数の開発とバグ修正を含むpython3バージョンの主な開発。python2バージョンはバグ修正のみをサポートしています。python3ユーザーは現在のバージョンを使用することをお勧めし、python2ユーザーはpython2バージョンを使用することをお勧めします。この取扱説明書はpython3バージョンの取扱説明書です。

1.インストーラー

このプログラムは2つのインストール方法を提供します。1つはソースインストール、もう1つはpipインストールであり、2つの機能はまったく同じです。ソースコードを変更する必要がある場合は、最初の方法を使用することをお勧めします。それ以外の場合は、任意のインストール方法を選択できます。

ソースのインストール

$ git clone https://github.com/dataabc/weiboSpider.git
$ cd weiboSpider
$ pip install -r requirements.txt

pipインストール

$ python3 -m pip install weibo-spider

2.プログラム設定

プログラム設定については、プログラム設定のドキュメントを参照してください。

3.プログラムを実行します

ソースコードインストールのユーザーは、weiboSpiderディレクトリで次のコマンドを実行できます。pipインストールのユーザーは、書き込み権限を持つ任意のディレクトリで次のコマンドを実行できます。

$ python3 -m weibo_spider

初めて実行すると、config.json構成ファイルが現在のディレクトリに自動的に作成されます。構成後、同じコマンドを実行してWeiboを取得します。

すでにconfig.jsonファイルがある場合は、config_pathパラメーターを使用してconfig.jsonパスを構成し、プログラムを実行することもできます。コマンドラインは次のとおりです。

$ python3 -m weibo_spider --config_path="config.json"

ファイル(csv、txt、json、image、video)の保存パスを指定する場合は、output_dirパラメーターを使用して設定できます。ファイルを/home/ weibo /ディレクトリに保存する場合は、次のコマンドを実行できます。

$ python3 -m weibo_spider --output_dir="/home/weibo/"

コマンドラインからuser_idを入力する場合は、パラメーターuを使用できます。1つ以上のuser_idを入力できます。各user_idは英語のコンマで区切られます。これらのuser_idに重複するuser_idがある場合、プログラムは自動的に複製。コマンドラインは次のとおりです。

$ python3 -m weibo_spider --u="1669879400,1223178222"

プログラムは、user_idがそれぞれ1669879400と1223178222であるマイクロブログユーザーのマイクロブログを取得します。user_idを取得する方法については、後で説明します。このメソッドのすべてのuser_idは、config.jsonのsince_dateとend_dateを使用して設定され、クロールの時間範囲は、それらの値を変更することで制御できます。config.jsonのuser_id_listがファイルパスの場合、各コマンドラインのuser_idは自動的にファイルに保存され、since_dateは自動的に更新されます。パスでない場合、user_idはuser_id_listに保存されます。現在のディレクトリのtxtであり、since_dateによって自動的に更新されます。user_id_list.txtが現在のディレクトリに存在しない場合、プログラムは自動的にそれを作成します。

パーソナライズプログラム(オプション)

このセクションはオプションであり、プログラムをパーソナライズしたり、新しい機能を追加したりする必要がない場合は無視できます。

このプログラムのメインコードはweibo_spider.pyファイルにあります。プログラムの本体はSpiderクラスです。上記のすべての関数は、メイン関数でSpiderクラスを呼び出すことによって実装されます。デフォルトの呼び出しコードは次のとおりです。

        config = get_config()
        wb = Spider(config)
        wb.start()  # 爬取微博信息

ユーザーは、必要に応じてSpiderクラスを呼び出したり変更したりできます。このプログラムを実行することで、多くの情報を得ることができます。

詳細はこちら
  • wb.user ['nickname']:ユーザーのニックネーム;
  • wb.user ['gender']:ユーザーの性別;
  • wb.user ['location']:ユーザーの場所;
  • wb.user ['birthday']:ユーザーの生年月日。
  • wb.user ['description']:ユーザープロファイル;
  • wb.user ['verified_reason']:ユーザー認証;
  • wb.user ['talent']:ユーザーラベル;
  • wb.user ['education']:ユーザーの学習体験。
  • wb.user ['work']:ユーザーの作業経験;
  • wb.user ['weibo_num']:マイクロブログの数。
  • wb.user ['following']:フォロワーの数;
  • wb.user ['followers']:フォロワーの数。

wb.weibo:上記の情報を含まないことに加えて、wb.weiboには、Weibo idWeibo本文元の画像のURL公開場所公開時間公開ツール、いいねのリツイートなど、クロールされたすべてのWeibo情報が含まれます。コメントなど クロールがすべてWeibo(オリジナル+転送)の場合、上記の情報に加えて、転送されたWeiboの元の画像のURL、元のWeiboあるかどうかなども含まれます。wb.weiboは、クロールされたすべてのWeibo情報を含むリストです。wb.weibo [0]は最初にクロールされたWeiboであり、wb.weibo[1]は2番目にクロールされたWeiboです。filter = 1の場合、wb.weibo [0]は最初にクロールされた元のWeiboであり、以下同様です。wb.weibo [0] ['id']は最初のWeiboのID、wb.weibo [0] ['content']は最初のWeiboの本体、wb.weibo[0]['publish_time']は最初のWeiboのリリース時間、およびここで繰り返されない他の多くの情報があります。特定の使用法を表示するには、下の[詳細]をクリックしてください。

詳細

ターゲットWeiboユーザーがWeiboを持っている場合、次のようになります。

  • id:マイクロブログIDを保存します。たとえば、wb.weibo[0]['id']は最新のWeiboのIDです。
  • content:存储微博正文。如wb.weibo[0]['content']为最新一条微博的正文;
  • article_url:存储微博中头条文章的url。如wb.weibo[0]['article_url']为最新一条微博的头条文章url,若微博中不存在头条文章,则值为'';
  • original_pictures:存储原创微博的原始图片url和转发微博转发理由中的图片url。如wb.weibo[0]['original_pictures']为最新一条微博的原始图片url,若该条微博有多张图片,则存储多个url,以英文逗号分割;若该微博没有图片,则值为"无";
  • retweet_pictures:存储被转发微博中的原始图片url。当最新微博为原创微博或者为没有图片的转发微博时,则值为"无",否则为被转发微博的图片url。若有多张图片,则存储多个url,以英文逗号分割;
  • publish_place:存储微博的发布位置。如wb.weibo[0]['publish_place']为最新一条微博的发布位置,如果该条微博没有位置信息,则值为"无";
  • publish_time:存储微博的发布时间。如wb.weibo[0]['publish_time']为最新一条微博的发布时间;
  • up_num:存储微博获得的点赞数。如wb.weibo[0]['up_num']为最新一条微博获得的点赞数;
  • retweet_num:存储微博获得的转发数。如wb.weibo[0]['retweet_num']为最新一条微博获得的转发数;
  • comment_num:存储微博获得的评论数。如wb.weibo[0]['comment_num']为最新一条微博获得的评论数;
  • publish_tool:マイクロブログを保存するための公開ツール。たとえば、wb.weibo [0] ['publish_tool']は、最新のWeiboの公開ツールです。

定期的にWeiboを自動的にクロールします(オプション)

プログラムを一定期間ごとに自動的にクロールし、クロールされたコンテンツが新しく追加されたコンテンツ(すでに取得したWeiboを除く)である場合は、Weiboの自動クロールを定期的に確認してください。

クッキーを取得する方法

Cookieを取得する方法については、Cookieのドキュメントをご覧ください。

user_idを取得する方法

user_idを取得する方法については、1人以上のWeiboユーザーのuser_idを取得する方法を説明しているuser_idのドキュメントを確認してください。

一般的な問題

プログラムの実行中にエラーが発生した場合は、最も一般的な問題と解決策が記載されているFAQページを表示できます。エラーがFAQにない場合は、問題を送信してサポートを求めることができます。喜んで回答させていただきます。

関連商品

  • weibo-crawler-機能はこのプロジェクトとまったく同じです。Cookieを追加せずにWeibo属性を追加できます。
  • weibo-search -1つ以上のWeiboキーワード検索結果を継続的に取得し、その結果をファイル(オプション)、データベース(オプション)などに書き込むことができます。いわゆるマイクロブログキーワード検索は、テキスト内に指定されたキーワードを含むマイクロブログを検索することであり、検索の時間範囲を指定することができます。非常に人気のあるキーワードの場合、1日の時間範囲で1,000万件を超える検索結果を取得でき、N日の時間範囲で1,000万件のXN検索結果を取得できます。ほとんどのキーワードでは、1日に生成される対応するマイクロブログの数は1,000万未満である必要があるため、プログラムはほとんどのキーワードのすべてまたはほぼすべての検索結果を取得できると言えます。さらに、プログラムは検索結果のすべての情報を取得でき、プログラムはこのプログラムによって取得されたマイクロブログ情報を取得できます。

助ける

このプロジェクトへの貢献は大歓迎です。貢献には、コードの送信、問題による提案(新機能、改善計画など)の作成、または問題によるプロジェクトのバグや欠点の通知などがあります。具体的な貢献方法については、「このプロジェクトへの貢献」を参照してください。

寄稿者

このプロジェクトに貢献してくれたすべての友人に感謝します。貢献者の詳細については、貢献者のページを参照してください。

予防

1.user_idをクローラーWeiboのuser_idにすることはできません。Weibo情報をクロールするには、最初にWeiboアカウントにログインする必要があります。これをクローラーWeiboと呼びます。クローラーのWeiboは自分のページと他のユーザーのページにアクセスし、取得するWebページの形式が異なるため、クローラーのWeibo情報をクロールできません。クローラーのWeiboのコンテンツをクロールする場合は、「独自のWeibo情報;

2.クッキーには、約3か月の期限があります。Cookieが間違っているか期限切れであるというプロンプトが表示された場合は、Cookieを再度更新する必要があります。