スクレイピングについて

Excelは便利だけれど、たぶん、スクレイピングができないのよね〜
Mac版はスクレイピングができない。

もし、ウェッブ上の情報を読み込むのなら、いったん、そのウェブページをローカルに保存し、そのうえで、「データ」 > 「HTML」により読み込むことになる。

Pythonには、スクレイピングのライブラリがたくさん用意されているようだ。

「Pthonには、巷にあるれるHTML/XML形式のデータの読み書き用のライブラリがたくさんあります。代表的なものとしては、lxml、Beautiful Soup、html5libがあげられます。これらの中では通常、lxmlがはるかに高速ですが、規格に従っていないXMLファイルを取り扱うには、lxml、Beautiful Soup、html5libの方が便利です」(「pythonによるデータ分析入門」/Wes Mckinney)

Pythonのライブラリ・Pandasには、read_htmlというモジュール(あるいはパッケージかも知れない)が用意されている。

同書によると、read_htmlを利用するには、Beautiful Soup、html5libといった外部ライブラリーをインストールしておくことが条件となる。

◎その際には、パッケージのインストール管理するためのcondaあるいは、pipを利用する。

conda install lxml Beautiful Souphtml5lib

あるいは、

pip install lxml Beautiful Souphtml5lib

◎インストールの確認

pip freeze | grep -e request -e lxml -e beautiful

beautifulsoup4==4.8.2
lxml==4.5.0
requests==2.22.0
Note: you may need to restart the kernel to use updated packages.

◎実例
import pandas as pd

url = ‘https://xn--vckya7nx51ik9ay55a3l3a.com/analyses/number_of_companies’

pd.read_html(url)[0]

◎文字化けする場合 => 当該ウェブページのエンコーディングをチェックし、第2引数で、そのエンコーディングを指定する。

import pandas as pd

url = ‘https://xn--vckya7nx51ik9ay55a3l3a.com/analyses/number_of_companies’

df = pd.read_html(url, encoding=’utf-8′)[0]

ウェッブ上の表を再構築

ウェッブサイトのいくつかあるテーブルから、最初のテーブルのインデックスと値だけを抽出して、Anaconda上で、またテーブルを組み立てる。

reモジュールのメソッドの引数に、正規表現を記述しようと思ってはみたけれど、正規表現に不慣れ、というか、使ったこともないため、エラいことになっていた。

暗中模索のなか、pandasを使ったところ、カンタンに出来てしまった。なーんだ、である。

import pandas as pd
url = 'https://bellcurve.jp/statistics/course/18766.html'
dfs = pd.read_html(url)

print(dfs[0])

# アウトプット
性別   度数
0  オス   60
1  メス   40
2  合計  100

(追記)
もっと、カンタンな方法があった。pandas、すげぇわ。
ウェッブサイト上の任意のテーブルをコピーし、以下の記述。これだけ〜

dfs2=table= pd.read_clipboard()
print(dfs2)

# アウトプット
性別   度数
0  オス   60
1  メス   40
2  合計  100