ウェブクローラ - ウェブサイトからの抽出物の有用なデータ

この章では、Pythonの学習が含まれるWebクローラー、学ぶことができますBeautifulSoupサイトからデータを抽出するために使用されるライブラリを、。

この章では次のトピックについて説明します。

  • ウェブクローラとは何ですか。
  • データ抽出。
  • ウィキペディアから情報を抽出します。

1ウェブクローラとは何ですか

ウェブサイトの抽出技術からWebクローラのデータを参照し、技術が構造化データに非構造化データを変換することができます。

使用するWebクローラーがWebサイトからデータを抽出することで、抽出されたデータは、お使いのシステム上のローカルファイルにして保存することができ、それはまた、テーブルの形式でデータベースに格納することができます。直接HTTPまたはWebブラウザを使用してWebクローラーがアクセスするワールド・ワイド・ウェブ(WWW)をプロセスのウェブクローラやロボットのクロールのWebページ自動化されたプロセスです。

データを抽出し、Webページをクロールするプロセスに入ります。WebクローラーがWebページを取得することができ、それはウェブクローラーのために必要なコンポーネントです。ページを取得した後、あなたは、データ・ページを抽出する必要があります。我々は、検索、解析し、その後、テーブルに再配置形式を抽出したデータを保存することができます。

2データ抽出

このセクションでは、データ抽出を研究しています。私たちは、Pythonの使用できるBeautifulSoupデータ抽出のためのライブラリを。また、Pythonライブラリを使用する必要性が存在するRequestsモジュールを。

インストールするには、次のコマンドを実行RequestsしてBeautifulSoupライブラリを。

$ pip3 install requests
$ pip3 install beautifulsoup4

2.1依頼図書館

使用するRequestsライブラリは、Pythonの使用のPythonスクリプトではHTTPに理解の形式を使用することができますRequestsライブラリは、Webページを取得します。Requestsライブラリは、使用が要求の異なる種類、含まれていGET要求を。GETWebサーバからの情報へのアクセス要求、GET要求は、特定のページのHTMLコンテンツを取得することができます。要求コードに対して各状態に相当するが、サーバから返されたステータスコードは、ステータスコードは米国に対応する要求の実行結果に関する情報を提供します。以下は、部分的なステータスコードです。

  • 200:それはすべてが正常であるとの結果を(もしあれば)を返します。
  • 301:サーバーは、ドメイン名またはエンドポイントの名前を変更する必要が切り替えられた場合、サーバは別のエンドポイントにリダイレクトされることを示します。
  • 400:ユーザーが間違ったリクエストを送信することを示します。
  • 401:ユーザーが認証されていないことを示します。
  • 403:ユーザーが無効なリソースにアクセスしようとしていることを示します。
  • 404:手段サーバのアクセスリソースへのユーザーの試行が利用できないこと。

2.2 BeautifulSoupライブラリー

BeautifulSoup単純な検索、ナビゲーションと修正方法が含まれているPythonライブラリです。それはちょうどページから必要なデータを抽出するためのキットです。

スクリプトを使用するにRequestsしてBeautifulSoupモジュールを、あなたが使用する必要がありimport、これらの二つのモジュールをインポートする声明を。今のサンプルプログラムでの外観は、ページを解析し、Baiduのウェブサイトからのニュースページが解析されますしましょう。名前のスクリプトを作成parse_web_page.pyし、その中に以下のコードを書かれています。

import requests
from bs4 import BeautifulSoup

page_result = requests.get('https://www.news.baidu.com')
parse_obj = BeautifulSoup(page_result.content, 'html.parser')

print(parse_obj)

以下に示すように、スクリプトを実行します。

student@ubuntu:~/work$ python3 parse_web_page.py
Output:
<!DOCTYPE html>

<html xmlns:fb="http://www.facebook.com/2008/fbml"
xmlns:og="http://ogp.me/ns#">
<head>
<meta charset="utf-8"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta content="app-id=342792525, app-argument=imdb:///?src=mdot"
name="apple-itunes-app"/>
<script type="text/javascript">var IMDbTimer={starttime: new
Date().getTime(),pt:'java'};</script>
<script>
    if (typeof uet == 'function') {
      uet("bb", "LoadTitle", {wb: 1});
    }
</script>
<script>(function(t){ (t.events = t.events || {})["csm_head_pre_title"] =
new Date().getTime(); })(IMDbTimer);</script>
<title>Top News - IMDb</title>
<script>(function(t){ (t.events = t.events || {})["csm_head_post_title"] =
new Date().getTime(); })(IMDbTimer);</script>
<script>
    if (typeof uet == 'function') {
      uet("be", "LoadTitle", {wb: 1});
    }
</script>
<script>
    if (typeof uex == 'function') {
      uex("ld", "LoadTitle", {wb: 1});
    }
</script>
<link href="https://www.imdb.com/news/top" rel="canonical"/>
<meta content="http://www.imdb.com/news/top" property="og:url">
<script>
    if (typeof uet == 'function') {
      uet("bb", "LoadIcons", {wb: 1});
    }

上記の例のプログラムのページをクロールし、使用するためにBeautifulSoupその分析を。最初に導入requestsし、BeautifulSoupモジュール、およびその後、URLにアクセスするためにGETリクエストを使用し、その結果がに割り当てられているpage_result変数、その後、作成BeautifulSoup対象をparse_obj、このオブジェクトは、requests結果を返しpage_result.content、その後、引数としてhtml.parserページを解析。

今、私たちは、クラスと抽出データにラベルを付けます。Webブラウザに移動し、検索する内容を抽出するために右クリックし、「チェック」オプションを見つけ、クラス名を取得するには、それをクリックしてください。プログラムでクラス名を指定して、スクリプトを実行します。名前のスクリプトを作成extract_from_class.pyし、その中に以下のコードを書かれています。

import requests
from bs4 import BeautifulSoup

page_result = requests.get('https://www.news.baidu.com')
parse_obj = BeautifulSoup(page_result.content, 'html.parser')

top_news = parse_obj.find(class_='news-article__content')
print(top_news)

以下に示すように、スクリプトを実行します。

student@ubuntu:~/work$ python3 extract_from_class.py
Output :
<div class="news-article__content">
<a href="/name/nm4793987/">Issa Rae</a> and <a
href="/name/nm0000368/">Laura Dern</a> are teaming up to star in a limited
series called "The Dolls" currently in development at <a
href="/company/co0700043/">HBO</a>.<br/><br/>Inspired by true events, the
series recounts the aftermath of Christmas Eve riots in two small Arkansas
towns in 1983, riots which erupted over Cabbage Patch Dolls. The series
explores class, race, privilege and what it takes to be a "good
mother."<br/><br/>Rae will serve as a writer and executive producer on the
series in addition to starring, with Dern also executive producing. <a
href="/name/nm3308450/">Laura Kittrell</a> and <a
href="/name/nm4276354/">Amy Aniobi</a> will also serve as writers and coexecutive
producers. <a href="/name/nm0501536/">Jayme Lemons</a> of Dern’s
<a href="/company/co0641481/">Jaywalker Pictures</a> and <a
href="/name/nm3973260/">Deniese Davis</a> of <a
href="/company/co0363033/">Issa Rae Productions</a> will also executive
produce.<br/><br/>Both Rae and Dern currently star in HBO shows, with Dern
appearing in the acclaimed drama "<a href="/title/tt3920596/">Big Little
Lies</a>" and Rae starring in and having created the hit comedy "<a
href="/title/tt5024912/">Insecure</a>." Dern also recently starred in the
film "<a href="/title/tt4015500/">The Tale</a>,
            </div>

上記の例では、最初のプログラムに導入requestsし、BeautifulSoupモジュール、およびその後の作成requestsオブジェクトとURLを割り当て、次に作成BeautifulSoupターゲットparse_objこのオブジェクトはrequests、結果を返すpage_result.contentパラメータとして、その後、使用しhtml.parserた分析のページを。最後に、使用BeautifulSoupするfind()から、メソッドnews-article__contentコンテンツクラスを取得します。

今、特定のタグからデータを抽出するプログラムの例でみましょう見てからこのサンプル・プログラム<a>ラベルエキスデータ。名前のスクリプトを作成extract_from_tag.pyし、その中に以下のコードを書かれています。

import requests
from bs4 import BeautifulSoup

page_result = requests.get('https://www.news.baidu.com/news')
parse_obj = BeautifulSoup(page_result.content, 'html.parser')

top_news = parse_obj.find(class_='news-article__content')
top_news_a_content = top_news.find_all('a')
print(top_news_a_content)

以下に示すように、スクリプトを実行します。

student@ubuntu:~/work$ python3 extract_from_tag.py
Output:
[<a href="/name/nm4793987/">Issa Rae</a>, <a href="/name/nm0000368/">Laura
Dern</a>, <a href="/company/co0700043/">HBO</a>, <a
href="/name/nm3308450/">Laura Kittrell</a>, <a href="/name/nm4276354/">Amy
Aniobi</a>, <a href="/name/nm0501536/">Jayme Lemons</a>, <a
href="/company/co0641481/">Jaywalker Pictures</a>, <a
href="/name/nm3973260/">Deniese Davis</a>, <a
href="/company/co0363033/">Issa Rae Productions</a>, <a
href="/title/tt3920596/">Big Little Lies</a>, <a
href="/title/tt5024912/">Insecure</a>, <a href="/title/tt4015500/">The
Tale</a>]

上記サンプルプログラム<a>抽出されたデータタグ。本明細書で使用されるfind_all()の方法news-article__contentのすべてのクラスの抽出<a>ラベルデータを。

ウィキペディアから3ダンプ情報

このセクションでは、ウィキペディアのウェブサイト、リストのすべての古典的なインド舞踊の踊りの種類のリストを取得するためのサンプルプログラムを検討します。名前のスクリプトを作成extract_from_wikipedia.pyし、その中に以下のコードを書かれています。

import requests
from bs4 import BeautifulSoup

page_result = requests.get('https://en.wikipedia.org/wiki/Portal:History')
parse_obj = BeautifulSoup(page_result.content, 'html.parser')

h_obj = parse_obj.find(class_='hlist noprint')
h_obj_a_content = h_obj.find_all('a')

print(h_obj)
print(h_obj_a_content)

以下に示すように、スクリプトを実行します。

student@ubuntu:~/work$ python3 extract_from_wikipedia.py

出力は次のとおりです。

<div class="hlist noprint" id="portals-browsebar" style="text-align:
center;">
<dl><dt><a href="/wiki/Portal:Contents/Portals"
title="Portal:Contents/Portals">Portal topics</a></dt>
<dd><a href="/wiki/Portal:Contents/Portals#Human_activities"
title="Portal:Contents/Portals">Activities</a></dd>
<dd><a href="/wiki/Portal:Contents/Portals#Culture_and_the_arts"
title="Portal:Contents/Portals">Culture</a></dd>
<dd><a href="/wiki/Portal:Contents/Portals#Geography_and_places"
title="Portal:Contents/Portals">Geography</a></dd>
<dd><a href="/wiki/Portal:Contents/Portals#Health_and_fitness"
title="Portal:Contents/Portals">Health</a></dd>
<dd><a href="/wiki/Portal:Contents/Portals#History_and_events"
title="Portal:Contents/Portals">History</a></dd>
<dd><a href="/wiki/Portal:Contents/Portals#Mathematics_and_logic"
title="Portal:Contents/Portals">Mathematics</a></dd>
<dd><a href="/wiki/Portal:Contents/Portals#Natural_and_physical_sciences"
title="Portal:Contents/Portals">Nature</a></dd>
<dd><a href="/wiki/Portal:Contents/Portals#People_and_self"
title="Portal:Contents/Portals">People</a></dd>
In the preceding example, we extracted the content from Wikipedia. In this
example also, we extracted the content from class as well as tag.
....

4まとめ

この章では、我々は2つのライブラリは、Webページからデータを抽出するために使用され、また、ウィキペディアからの抜粋情報に学習された研究のWebクローラの内容、について学びました。

第17章では、我々は情報を収集し、統計レポートを学びます。numpyの前記学習モジュール、データの視覚化プロットの使用、グラフおよびチャートはデータを表示します。

5つの質問

1。Webクローラーは何ですか?

2。ウェブクローラは何ですか?

3。私たちは、あなたがログインする必要があり、Webページからデータをつかむことができますか?

4。私たちは、Twitterのサイトのデータをクロールすることができますか?

5。我々は、Javaスクリプトのページデータをクロールすることはできますか?もしそうなら、どのように?

:この記事は取られ、「システム管理者のPythonスクリプトガイドのために書かれた」
[インド]ガンニシュ・サンジーバ・ナイク(ガネーシュ、Sanjiv、ナイク)と、張呉は、翻訳された

Pythonのインストール紹介する本をプログラミングの基本を説明します知識。次に、コンフィギュレーションから、開発プロセス全体を解析に焦点を当てる本は(テキスト処理、正規表現、ファイルのアーカイブと暗号化)、ネットワーク管理ITの日常の活動管理者を含め、さまざまなツールを構築するために、その後の準備とする(ソケットグラフィカル・ユーザー・インターフェースを作成、プログラミング、電子メールの取り扱い、使用のTelnet / SSH遠隔制御装置およびSNMP / DHCPおよびその他のプロトコル)、処理するウェブサイト(Apacheのログファイルの取り扱い、SOAP、およびRESTのAPI通信、ウェブクローリング)、だけでなく、データベース管理(MySQLのそして、類似したデータベースのデータ管理、データ分析とレポート)。書籍の完了は、読者が実用的なタスクに挑戦解決するための強力なツールを構築するためにPythonの機能を使用できるようになります。

読者は、次のことを学びます:
PythonとデバッグPythonスクリプトをインストールする方法を学びます。
■理解し、自動テストや日常の管理活動のための書き込みスクリプト;
■テキスト処理、暗号化、復号化、およびアーカイブスクリプトの書き方を学びます。
■ PDFやExcel、CSV、テキストファイルを処理し、レポートを生成する;
■スクリプト(電子メールの取り扱いを含む)、リモートネットワーク管理のための執筆;
■ビルドインタラクティブなグラフィカル・ユーザー・インターフェース・ツールは、
■プロセスApacheのログファイルは、だけでなく、SOAPとREST API通信;
■自動化されたデータベース管理と統計解析。

公開された458元の記事 ウォンの賞賛273 ビュー820 000 +

おすすめ

転載: blog.csdn.net/epubit17/article/details/103949516