Python-web-scraping-python-modules-for-web-scraping

提供:Dev Guides
移動先:案内検索

Webスクレイピング用のPythonモジュール

この章では、Webスクレイピングに使用できるさまざまなPythonモジュールについて学びましょう。

virtualenvを使用したPython開発環境

Virtualenvは、孤立したPython環境を作成するツールです。 virtualenvの助けを借りて、Pythonプロジェクトに必要なパッケージを使用するために必要なすべての実行可能ファイルを含むフォルダーを作成できます。 また、グローバルインストールにアクセスせずにPythonモジュールを追加および変更できます。

次のコマンドを使用して virtualenv をインストールできます-

(base) D:\ProgramData>pip install virtualenv
Collecting virtualenv
   Downloading
https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c3
5d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl
(1.9MB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 1.9MB 86kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0

今、私たちは次のコマンドの助けを借りてプロジェクトを表すディレクトリを作成する必要があります-

(base) D:\ProgramData>mkdir webscrap

今、この次のコマンドの助けを借りてそのディレクトリに入る-

(base) D:\ProgramData>cd webscrap

今、私たちは次のように選択した仮想環境フォルダを初期化する必要があります-

(base) D:\ProgramData\webscrap>virtualenv websc
Using base prefix 'd:\\programdata'
New python executable in D:\ProgramData\webscrap\websc\Scripts\python.exe
Installing setuptools, pip, wheel...done.

次に、以下のコマンドを使用して仮想環境をアクティブ化します。 正常にアクティブ化されると、ブラケットの左側にその名前が表示されます。

(base) D:\ProgramData\webscrap>websc\scripts\activate

次のように、この環境に任意のモジュールをインストールできます-

(websc) (base) D:\ProgramData\webscrap>pip install requests
Collecting requests
   Downloading
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (9
1kB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 148kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
   Downloading
https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca
55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133
kB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 369kB/s
Collecting certifi>=2017.4.17 (from requests)
   Downloading
https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee6364
4d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl
(147kB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 153kB 527kB/s
Collecting urllib3<1.24,>=1.21.1 (from requests)
   Downloading
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133k
B)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 517kB/s
Collecting idna<2.8,>=2.5 (from requests)
   Downloading
https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746
a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 61kB 339kB/s
Installing collected packages: chardet, certifi, urllib3, idna, requests
Successfully installed certifi-2018.8.24 chardet-3.0.4 idna-2.7 requests-2.19.1
urllib3-1.23

仮想環境を非アクティブ化するには、次のコマンドを使用できます-

(websc) (base) D:\ProgramData\webscrap>deactivate
(base) D:\ProgramData\webscrap>

(websc)が非アクティブ化されていることがわかります。

Webスクレイピング用のPythonモジュール

Webスクレイピングは、Webから有用な情報を自動的に抽出、解析、ダウンロード、整理できるエージェントを構築するプロセスです。 つまり、Webスクレイピングソフトウェアは、Webサイトからデータを手動で保存する代わりに、要件に従って複数のWebサイトからデータを自動的にロードおよび抽出します。

このセクションでは、Webスクレイピングに役立つPythonライブラリについて説明します。

リクエスト

これは、単純なPython Webスクレイピングライブラリです。 Webページへのアクセスに使用される効率的なHTTPライブラリです。 Requests の助けを借りて、Webページの生のHTMLを取得し、データを取得するために解析することができます。 *リクエスト*を使用する前に、そのインストールを理解してください。

リクエストのインストール

仮想環境またはグローバルインストールのいずれかにインストールできます。 pip コマンドの助けを借りて、次のように簡単にインストールできます-

(base) D:\ProgramData> pip install requests
Collecting requests
Using cached
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl
Requirement already satisfied: idna<2.8,>=2.5 in d:\programdata\lib\sitepackages
(from requests) (2.6)
Requirement already satisfied: urllib3<1.24,>=1.21.1 in
d:\programdata\lib\site-packages (from requests) (1.22)
Requirement already satisfied: certifi>=2017.4.17 in d:\programdata\lib\sitepackages
(from requests) (2018.1.18)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in
d:\programdata\lib\site-packages (from requests) (3.0.4)
Installing collected packages: requests
Successfully installed requests-2.19.1

この例では、Webページに対してGET HTTPリクエストを作成しています。 このためには、まず次のようにリクエストライブラリをインポートする必要があります-

In [1]: import requests

次のコード行では、リクエストを使用して、GETリクエストを作成することにより、URL [[1]] HTTPリクエストを作成します。

In [2]: r = requests.get('https://authoraditiagarwal.com/')

これで、次のように .text プロパティを使用してコンテンツを取得できます-

In [5]: r.text[:200]

次の出力では、最初の200文字が取得されていることに注意してください。

Out[5]: '<!DOCTYPE html>\n<html lang="en-US"\n\titemscope
\n\titemtype="http://schema.org/WebSite" \n\tprefix="og: http://ogp.me/ns#"
>\n<head>\n\t<meta charset
="UTF-8"/>\n\t<meta http-equiv="X-UA-Compatible" content="IE'

Urllib3

*requests* ライブラリに似たURLからデータを取得するために使用できるもう1つのPythonライブラリです。 詳細については、https://urllib3.readthedocs.io/en/latest/の技術文書をご覧ください。

Urllib3のインストール

*pip* コマンドを使用して、仮想環境またはグローバルインストールのいずれかに *urllib3* をインストールできます。
(base) D:\ProgramData>pip install urllib3
Collecting urllib3
Using cached
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl
Installing collected packages: urllib3
Successfully installed urllib3-1.23

例:Urllib3とBeautifulSoupを使用したスクレイピング

次の例では、 Urllib3 および BeautifulSoup を使用してWebページをスクレイピングしています。 Webページから生データ(HTML)を取得するために、リクエストライブラリの場所で Urllib3 を使用しています。 次に、そのHTMLデータの解析に BeautifulSoup を使用しています。

import urllib3
from bs4 import BeautifulSoup
http = urllib3.PoolManager()
r = http.request('GET', 'https://authoraditiagarwal.com')
soup = BeautifulSoup(r.data, 'lxml')
print (soup.title)
print (soup.title.text)

これは、このコードを実行したときに観察される出力です-

<title>Learn and Grow with Aditi Agarwal</title>
Learn and Grow with Aditi Agarwal

セレン

これは、さまざまなブラウザとプラットフォームにまたがるWebアプリケーション向けのオープンソースの自動テストスイートです。 単一のツールではなく、ソフトウェアのスイートです。 Python、Java、C#、Ruby、JavaScript用のセレンバインディングがあります。 ここでは、セレンとそのPythonバインディングを使用してWebスクレイピングを実行します。 リンクlink:/selenium/index [Selenium]でSelenium with Javaの詳細を学ぶことができます。

Selenium Pythonバインディングは、Firefox、IE、Chrome、RemoteなどのSelenium WebDriversにアクセスするための便利なAPIを提供します。 現在サポートされているPythonバージョンは2.7、3.5以上です。

Seleniumのインストール

*pip* コマンドを使用して、仮想環境またはグローバルインストールのいずれかに *urllib3* をインストールできます。
pip install selenium

seleniumは選択したブラウザとのインターフェイスにドライバーを必要とするため、それをダウンロードする必要があります。 次の表は、さまざまなブラウザーと、それらをダウンロードするためのリンクを示しています。

Chrome https://sites.google.com/a/chromium.org/
Edge https://developer.microsoft.com/
Firefox https://github.com/
Safari https://webkit.org/

この例は、セレンを使用したWebスクレイピングを示しています。 また、セレンテストと呼ばれるテストにも使用できます。

指定されたバージョンのブラウザー用の特定のドライバーをダウンロードした後、Pythonでプログラミングを行う必要があります。

まず、次のようにセレンから webdriver をインポートする必要があります-

from selenium import webdriver

次に、要件に従ってダウンロードしたWebドライバーのパスを指定します-

path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
browser = webdriver.Chrome(executable_path = path)

次に、Pythonスクリプトで制御されるWebブラウザーで開きたいURLを指定します。

browser.get('https://authoraditiagarwal.com/leadershipmanagement')

また、lxmlで提供されるxpathを提供することにより、特定の要素をスクレイピングすることもできます。

browser.find_element_by_xpath('/html/body').click()

出力については、Pythonスクリプトで制御されているブラウザーを確認できます。

スクレイピー

ScrapyはPythonで書かれた高速でオープンソースのWebクロールフレームワークであり、XPathに基づくセレクターの助けを借りてWebページからデータを抽出するために使用されます。 Scrapyは、BSDでライセンスされた2008年6月26日に初めてリリースされ、2015年6月にマイルストーン1.0がリリースされました。 Webサイトからデータを抽出、処理、構造化するために必要なすべてのツールを提供します。

Scrapyのインストール

*pip* コマンドを使用して、仮想環境またはグローバルインストールのいずれかに *urllib3* をインストールできます。
pip install scrapy

Scrapyの詳細については、次のリンクにアクセスしてください:/scrapy/index [Scrapy]