アヤックスはクロールデータWeiboにしよう
著者:マーフィーマーフィー非フィリピン
序文
時間ハエ、時間が飛びます。誤って、分単位で一日分の時間になって、何も起こらなかったが、ハードディスクの指が似滑空分割は、見つけること。瞬時に金曜日に瞬き、金曜日によく知られている、学校のベルが鳴って、さびれました。私は嫉妬空のゴールを守って、リアウィンドウに頼って、教室の最後の行に一人で座っていました。群衆が団結、静かに移動散乱、人々はありませんマナーのような、安心して躊躇します。2階の教室の人々は、2013年11月金曜日のタイムフレームは、思考が既に距離に漂流している、地上階沈没銀杏の木を見詰めます。
上記は、期間年間、非常に人工的な日記を引用しました。ここでは、それは読者が要求されます良いことであってもよいし、この上下は、その後、あなたの考えは場所を正確にそれに漂っていますか?私は半分エーカーについて深くそのどちらも張銭万里の長城フロンティア英雄を超え、ないティエンティエンWenjing次元の花のケアのように言うでしょう。はい、若い男は、Ajaxのデータをクロール----今日のテーマの無知と思いました。
簡単な紹介のAjax
インタラクティブ作成にAjaxのすなわち「非同期JavaScriptとXML」(非同期JavaScriptとXML)は、参照、ページのWebページ全体の技術的な部分をリロードすることなく、高速なWeb開発技術動的なWebアプリケーションは、更新することができます。
舞台裏のサーバと少量のデータを交換することにより、Ajaxの非同期ページの更新を行うことができます。この手段は、ことのページの特定の部分のために、ページ全体をリロードせずに更新します。
それは、リビングルーム、キッチン、バスルームを定義するレンタルのような、HTMLのWebフレームワークは、翻訳が、何に関係なく入れています。このとき、顧客の到着は、リビングルーム、キッチン、バスルーム(JavaScriptを)装飾が施されています。次の顧客は、まだ彼女の部屋(フロントページの表示)を飾るために借りたこのスペースを使用することができたとき。Ajaxのリクエストと送信データ、および最終的にはウェブのロードと、このデータの位置(XHR)をレンダリングし、フォーマットが明らかであろう。
II。オブジェクト指向プログラミング
コード全体の完成は、多くの機能の上に構築されています。各個々のパッケージの機能(機能も呼ばれる)方式であり、個々のオブジェクトを必要とします。ここでのオブジェクトは、確かに私のオブジェクト6_6なく、あなたの目標ではない、と。オブジェクト指向の明白な利点があるが、唯一確かに身体全体に影響を与えない、関数内で処理する必要があるメンテナンスアップグレードした後、非常に便利なパラメータ変更の時間です。例えば、同じ象は冷蔵庫に入れて:プロセス指向プログラミングが必要です:(?象の心臓OSは私が間違ってやっている)、冷蔵庫を開き;象に冷蔵庫を閉めます。そして、オブジェクト指向プログラミングが必要です冷蔵庫の開口規定された方法を、ゾウにメソッド定義、定義されたドアを閉じ、メイン関数で定義された方法(主に())と上記メソッドを呼び出します。
ここでは、それははるかに複雑なオブジェクト指向プログラミングを思わ。しかし、新しいゾウをロードするとき、あなたは、プロセス指向のプログラミングが可能になるように変更する場合:象は(私は私の髪の冷蔵庫が欲しい_)、変更後は、冷蔵庫のドアの方法の(新しい定義冷蔵庫のドアを閉め髪をシャット)とオブジェクト指向プログラミングは、唯一のゾウ内に新しい主な機能は、新しい冷蔵庫を変更する必要があります。これは便利な場所です。
III。第一歩を
ステップを書く1
、マイクロボーを表示する各weiboページを開いた後、ドロップダウン最後にリフレッシュ。ソースコードを研究、情報がHTML内部で発見されていない、推測では、Ajaxの動的ローディングであるべきです。オープンXHRは、各マイクロブログのアドレスを見つけます。だから、アイデアはおそらく出てきました:
- :各動的URLを見つけ、JSONを解析し、ホームを取得します。
- :テキスト、時間、設備、コメントポイントと最初の5つのコメントのように、転送の数を取得し、ダイナミック、分析JSONを取得します。
- :ストレージ。
2.インポートライブラリ、家庭やヘッダ
行に塗りつぶしを追加するために必要なものの後の最初のインポート要求、。
3.各動的に取得するためのメソッドを定義するURL
ここでは、大きな問題を発見しました!!!別のページをスライスするオフセット=「/ D」と思想マイクロフェア、私はコンピュータをオフ私の結果を聞かせて準備ができて、私は完全な正規since_idを見つけることができなかったので、その全長完全なURLとなるように、ありました:
urls = ['https://m.weibo.cn/status/IvxUIvnzi?mblogid=IvxUIvnzi&luicode=10000011&lfid=1076032830678474',
'https://m.weibo.cn/status/IyieDa0M1?mblogid=IyieDa0M1&luicode=10000011&lfid=1076032830678474',
'https://m.weibo.cn/status/Ix2jNtRNI?mblogid=Ix2jNtRNI&luicode=10000011&lfid=1076032830678474'
はい、すべてのフィールドは、このmblogidは法律を見つけることができなかった以外、同じです。
そして、そこにGoogleのためのもので、CTRL +がCSDNが見つかっ見つけ、それが[「cardlistInfo」] [「since_id各ページの元のデータに隠されている 」] 以下。問題が解決しました。
since_id、list_each_page:この時点で、動的取得方法の各々は、2つのパラメータを返します。
10 4.前にループ内で主な機能
デフォルトのパラメータ(URLの最初のパラメータ)への最初の循環は、ページの動的URLを取るために各ループのために、再び、20をクロールするために、sence_id。
前記方法は、各動的情報を取得するために、定義されました
情報が多様であると耐え難い散乱、今回のデータをクリーニングし、書式設定は特に重要です!前回の記事でライブラリーのXPath、BS4とpyqueryを解析について話すそれがあまりにも複雑になるので、何ら言及の正規表現は、ありません。しかし、再本当に絶対的な武器の文字列(文字列)を動作させるには、文字列の任意の操作を達成するために期待することはできません。時間に例えば、テキストなど。このような排水チェンに水が存在する抽出フィールドへMblogid必要性:
import re
url = 'https://m.weibo.cn/status/IvxUIvnzi?mblogid=IvxUIvnzi&luicode=10000011&lfid=1076032830678474'
each_url_right = re.findall('.*mblogid=(.*?)&.*',url)
この手順は問題ありません。パースJSON辞書はそれぞれが特に注意ネストされたリスト場合を除き。
走行中に前記メイン関数main()
テストの実行に数回は誤ったデータ、誤りがあることを発見しました。その後、一緒に試してみると...フィールドを除いて滑らかな仕上げに進路を確保します。問題は、まだリストの内側に行くURL関数にインポートした後、リストの1回の反復の後に、それが理解されていない理由は、時間タイプ()は、インデックスの値をとり、直接印刷後に理解することは考えもあります。
7.ストレージCSV
でExcelに保存するが、関連する辞書を保存する方法はありません。私は、CSVでcsv.DictWriter()メソッドを選択するようにします。
毎回ラインは、ヘッダが書き込まれる最初の時間は、悪化、ヘッダ法、書き込み内容の方法を書き込みます。
「改行= 『』」を追加するときに、第2の時間は、発見Baiduの後に空白行がファイルを開く必要が
正常に解決します!
結果は、クロール後にどのようにExcelを示しています。
おわり
時間は、画面の前で最後のショー内のすべてのデータは間違いなくアウト「マイクロブロギングた.mdクロールAjaxのデータを試す」整理するために夜の時間で励起され、午後に3木曜日11時00分から、で点滅、個人的な共有とみなすこと少しの経験と知識。ソースコードの最後のショー。