分析のためのデータをクロールする大規模なデータ爬虫類を使用する方法

爬虫類は、多くの人が聞いたことがあるしている必要があり、ここでは簡単な紹介の爬虫類、爬虫類は、プログラムが自動的に私たちはいくつかの有用な情報を得るのを助けることができるウェブページの情報をつかむことができました。これらの機能は、クローラと呼ばれることができます実行することができ、現在主流のPythonの爬虫類の枠組みは、スケジューラ(貴重なデータをクロール)URL管理、Webダウンロード、ウェブパーサアプリケーションに分かれています。ダウンロードするには、スケジューラ、主にスケジュール管理、およびパーサ;主にフェッチまたはクロールのような繰り返しサイクルを防ぐために、URLを管理するために使用されるURLマネージャ、Webページをダウンロードするダウンローダ、および列に変換;のためのページパーサー文字列解析をダウンロードし、DOMツリーを解決する鍵は、XML、HTMLに対して解決することができます。爬虫類のフレームワークは、仕事の80%を完了するために、私たちを助けている、私たちは3つの段階に焦点を当てる必要があります:


1、データ要求ターゲットサイトを取得する方法、


2、私たちが望むパーサからデータを傍受する方法、


3、分析のためのデータを取得する方法について説明します。


ここではベタライブテーマ、アンカーの例を全体の実装プロセスを実証するための最も人気のあるターゲット上で最もホットなサイトにあります:


Python環境を構築します

ます。http://www.runoob.com/python/python-install.html以下のアドレスを参照することができますPython環境を構築します


クローラフレームには、いくつかのモジュールをインストールする必要があり、beautifulSoup4、実行中の各コマンドを要求し、


リクエストをインストールするPIP


beautifulSoup4をインストールするPIP


PyCharm開発ツールの選択は、上記のコマンドを実行した後、2つのコンポーネントがインストールは、パケットが関連するツールに導入してもよいが成功し、PyCharmモジュール搭載しました


#!は/ usr / binに/ pythonの

インポート要求

基地局としてBS4インポートBeautifulSoupから

導入が成功した場合、インストールは完了です。環境を設定した後、我々はコードをコーディングを開始します。


ウェブサイトの情報取得対象

さんはベタライブウェブサイト、HTTPSを開いてみましょう://www.douyu.com/directory/all,F12は、情報ページを見ることができ、


サイトデータ要求を要求することにより、


応答= requests.get( "https://www.douyu.com/directory/all")

印刷response.text



私たちは、あなたが私達の注意の最初のステップを完了した文字列情報のページを取得します。


ウェブ情報の解析

ここで私たちはウェブの構造を解析支援するためにDOMツリーを経由して、BeautifulSoupは非常に強力な、必要なデータに大量のテキストをフィルタリングする方法ですが、Pythonので解決することができhtml.parserが来る、また、lxmlのを解析するために使用することができます。


HTML = response.text

html_tree = BS(HTML、 "html.parser")

印刷html_tree

あなたは文字列を見ることができる前に、情報が非常に明確なHTMLテキストを与えるようにフォーマットされています。バック容易DOMツリーデータの各ノードによってアクセスすることができます。私たちは、<LI /> <UL />タグでHTMLテキスト有用なデータを観察することができ、部屋名は<h3のクラス=「省略記号」/>タグ、お部屋タイプ<スパンクラス=「タグの省略記号のコンテンツです"/>タブ、<スパンクラス=の客室数" DY-numがFR "/>、<スパンクラス=アンカー名" DY-Name省略FL「/>インチ

単に解析されたHTMLテキストでは、<UL />タグのID =「ライブリストcontentbox」を見つけると、すべての<LI />タグのコンテンツを取得


#お問い合わせULタグ

host_infos = html_tree.find( "UL"、{ "ID": "ライブリストcontentbox"})

#印刷host_infos

#すべてのliタグを照会します

host_listを= host_infos.find_all( "LI")

印刷host_listを

#トラバースは、ライブ情報を取得します

host_listを、ホスト用:

    #ルーム名を取得します。

    HOME_NAME = host.find( "H3"、{ "クラス": "省略記号"})。string.strip()

    HOME_NAME = home_name.replace( ""、 "")

    #アンカー名を取得

    p_str = host.find( "P")

    HOST_NAME = p_str.find( "スパン"、{ "クラス": "DY-Name省略FL"})。string.strip()

    #部屋のタイプを取得します。    

    home_type = host.find( "スパン"、{ "クラス": "タグ省略記号"})文字列。

    #部屋をゲット

    home_num = host.find( "スパン"、{ "クラス": "DY-NUM FR"})。ストリング

    印刷「\ 033 [31メートルルーム名:\ 033 [0メートル%sの、033 [31メートルのルームタイプ\:033 [0メートルの%s \、033 [31メートルのアンカー名\:\ 033 [0メートル%sの、部屋の033 31メートル\ [ :033 [0メートル%sの「\ \

          %(HOME_NAME、home_type、HOST_NAME、home_num)



この時点で、我々はデータ分析に必要なデータの最初のページにクロールされている、我々は戻って2、3クロールし続け、。一般的なウェブのために、データの基本的な流れはそうクロール。もちろん、別の難しさが異なるサイトをクロールし、使用される技術は、異なることを観察し、有用なデータを取得する方法を考える必要があります。例えば、いくつかのサイトは一度ログインデータを取得する必要があり、我々は、ログインプロセスをシミュレートクッキーを保存する必要があるか、トークンがデータを要求するために使用されます。


ベタのWebサイトを取り、我々は次のページをクリックしたとき、あなたはF12を介してネットワーク要求を表示することができ、あなたが面白い法律を見つけることができ、






私たちは3ページをクリックすると、リンク要求はhttps://www.douyu.com/gapi/rkc/directory/0_0/3です


あなたは4ページをクリックすると、リンク要求はhttps://www.douyu.com/gapi/rkc/directory/0_0/4です


我々は、ライブ情報データ200ページを取得するために、後に実行コードを、上で直接、データ1時間の数百ページを得ることができるので、最後にリクエストリンクは、単にデジタルページ要求です。


#!は/ usr / binに/ pythonの

#コーディング= UTF-8

インポート要求

輸入JSON

#は()の前にリロードインポートsysは、モジュールに導入されなければなりません

リロード(SYS)

( 'UTF-8')sys.setdefaultencoding#中国の文字化けを解消

 

カウント= 1

BASE_URL = "https://www.douyu.com/gapi/rkc/directory/0_0/"

 

#ストレージデータパス

host_file_data =オープン( "D:\\ tmp_data \\ file_data.csv"、 "W")

host_file_data.write(「ルーム名、ルームカテゴリー、アンカー名、部屋番号\ n」)

#200データ要求

数<200中:

    request_url = BASE_URL + STR(カウント)

    応答= requests.get(request_url)

    #ロードJSONデータ

    json_data = json.loads(response.text)

    json_dataでhost_infoための[ "データ"] [ "RL"]:

        #ルーム名内部の解析のJSON、お部屋タイプ、アンカー名、部屋番号

        HOME_NAME = host_info [ "RN"]。( " " "").replace("、"、 "")を交換

        home_type = host_info [ "c2name"]

        HOST_NAME = host_info [ "NN"]

        home_user_num = host_info [ "OL"]

        #印刷「\ 033 [31メートルの部屋名:033 [0メートルの%s \、033 [31メートルのルームタイプ\:\ 033 [0メートル%sの、033 [31メートルのアンカー名\:033 [0メートル%sの、033 \ [31メートルの部屋\番号:033 [0メートル%sの「\ \

        #1%(HOME_NAME、home_type、HOST_NAME、home_user_num)

        #書き込みファイル

        host_file_data.write(HOME_NAME + "" + home_type + "" + HOST_NAME +

                             "" + STR(home_user_num)+ "\ n" は)

    数+ = 1



データの統計解析

私たちの目標は、ランキングの最もホットなトピックと最も人気のあるアンカー名の統計にあります。matplotlibのパイソンライブラリは、ライブラリーデータ分析タスクは、インポートを完了し、ジョブデータを読み取るために、ここで、解決することができパンダ、すばやく2Dグラフィックスを描画するために私たちを助けることができます。


パンダをインストールし、レポートSimHei見つからない、中国のボックスの表示の問題を実行する場合、matplotlibのは、ライブラリをインストールするインストールピップピップで:


ディレクトリ/python2.7/site-packages/matplotlib/mpl-data/fonts/ttfにルートディレクトリにコピーされたPythonのフォントの下の最初のsimhei.ttfのwindwos、

そして、〜/ .cache / matplotlibのバッファのディレクトリ、再実行を削除します。


      1.統計は、トピックの数(室料)まで生きます


Pd等の輸入パンダ

PLTとしてインポートmatplotlib.pyplot

 

DF = pd.read_csv( "/ルート/ .jupyter / study_python / file_data.csv")#は、データを読み出します

#統計は、テーマ(部屋のカテゴリ)まで生きます

名前=のDF [ "ルームタイプ"] .value_counts()

plt.rcParams [ 'figure.figsize'] =#を設定し、図の大きさ(20.0,4.0)

plt.rcParams [ 'figure.dpi'] = 200#設定分解能

#フォントマップを設定します。

フォント= {

   「家族」:「SimHei」

   「体重」:「太字」

   'サイズ': '15'

}

plt.rc( 'フォント'、**です)

plt.bar(names.index(0:15)、names.values(0:15)、FC = 'B')

plt.show()

      ランキングの視聴者2.ライブトピックス




      視聴者の数3.各アンカーランキング




データ分析にクロールからのデータは、全体のプロセスは非常に基本的ですが、私は読者がこの単純な例をビッグデータと爬虫類の関心を生成することができるかもしれ願っています。フォローアップは、あなたに感謝、共有するために、高度なデータ分析を表示していきます。


おすすめ

転載: blog.51cto.com/14485508/2426994