Pythonの爬虫類戦闘チュートリアル:網易のニュースをクロール

序文

ネットワークからこの記事のテキストや画像、唯一学ぶため、交換は、ない任意の商業目的のために、どんな質問ならば、治療のための私達に連絡してください、元の作者に属します。

著者:アマウリ

PS:必要なPythonの学習教材は、小さなパートナーに追加することができた場合は、自分自身を取得するには、以下のリンクをクリックしてください

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

エントリーレベルのクラスに属するこの記事の爬虫類、読んでいない古いドライバ。

これは主にニュースのタイトル、著者、ソース、リリースタイム、ニューステキストなど、網易ニュースをクロールしています。

まず、我々はランダムにカテゴリを選択し、163件のサイトを開設し、そしてここで私は分類が全国ニュースで選択します。そして、ソースコード、ソースコードを表示するために右クリックして、中央にニュースのリストページを見つけられませんでした。これは、このページには、非同期的に使用していることを示しています。つまり、取得インタフェースAPIを介してデータです。

だから、F12を確認した後、Googleのブラウザベースのコンソールを開き、ネットワーク上でクリックするために使用することができ、我々はプルダウン、右側に表示され発見されている:"... special/00804KVA/cm_guonei_03.js? .... "アドレスとレスポンスを開くように、我々は、APIインターフェイスを探していたまさに発見しました。 ここに画像を挿入説明

「cm_guonei_03.js」、「cm_guonei_04.js」それは明らかである、:あなたはアドレスを見ることができ、これらのインタフェースの一定のルールは以下のとおりです。

http://temp.163.com/special/0...*).js

上記のアドレスは、私たちがこの要求をつかむしたい接続です。

次に、あなただけが2つのPythonライブラリを使用する必要があります。

  • リクエスト

  • JSON

  • BeautifulSoup

リクエストライブラリは白がリソースにアクセスするブラウザをシミュレートすることであると言って、ネットワーク要求に使用されます。

当社が収集APIインターフェースであるので、そのフォーマットはJSONですので、パースにJSONライブラリを使用しています。BeautifulSoupはパースHTML文書に使用され、簡単に私たちは、指定のdivの内容を得るのを助けることができます。

ここでは、爬虫類を書き始めます。

最初のステップは、以上の3つのパッケージをインポートすることです:

輸入JSONの
 インポート要求
 から BS4 輸入 BeautifulSoup

 

その後、我々は、データ取得メソッド内で指定されたページを定義します。

1  DEF get_page(ページ):
 2      url_temp = ' http://temp.163.com/special/00804KVA/cm_guonei_0{}.js ' 
3。      return_list = []
 4。     ための I における範囲(ページ)
 。5          URL = url_temp。フォーマット(I)
 6。          応答= requests.get(URL)
 7。         のIF response.status_code = 200です!8は             続行
9。          コンテンツ= response.text   フェッチ応答体
10          _content = formatContent(コンテンツ)   #の形式のJSON文字列
11         結果= json.loads(_content)
 12          return_list.append(結果)
 13      リターン return_list

 

この方法では、各ページに対応するコンテンツのリストを取得します:

ここに画像を挿入説明

データが示すの分析の後、次の図は、判明タイトルを取得する必要があり、同様で公開されたニュースコンテンツページです。

ここに画像を挿入説明

今すぐページのURLの内容に取得されたこと、そして次のニューステキストをクロールを開始。

私たちがクロールする前にまず、htmlページの本文テキストを分析し、HTML文書内のテキスト、著者、ソースの場所を見つけます。

ドキュメント内の記事のソースは次のようにどこ私たちは、以下を参照してくださいid = "ne_article_source" 的 a 标签上の場所:テキスト位置: class = "ep-editor" 的 span 标签 class = "post_text" 的 div 标签

これらの三つの要素の下に取得コードをインタビュー:

 1 def get_content(url):
 2     source = ''
 3     author = ''
 4     body = ''
 5     resp = requests.get(url)
 6     if resp.status_code == 200:
 7         body = resp.text
 8         bs4 = BeautifulSoup(body)
 9         source = bs4.find('a', id='ne_article_source').get_text()
10         author = bs4.find('span', class_=' EP-エディタ' ).get_text()
 11          本体= bs4.find(' DIV '、class_が= ' post_text ' ).get_text()
 12      リターンソース、作成者、身体

これまでのところ、すべての私たちは、クロールのデータが収集されている必要があります。

それでは、もちろんそれらのセーブダウン、保存するためにテキストの形をとるダイレクトIを容易にするためです。以下は、最終的な結果です。

ここに画像を挿入説明

JSON形式の文字列、 "タイトル":[ '日付'、 'URL'、 'ソース'、 '著者'、 'テキスト']。

方法は、現在の実装では、完全に同期されることに注意してください、直線的、買収は非常に遅くなることの問題。主遅延がネットワークIO上で、それは非同期IO、非同期取得にアップグレードすることができます。

おすすめ

転載: www.cnblogs.com/Qqun821460695/p/12001703.html