前提知識
・python
■スクレイピング、クローリング、パースとは
スクレイピングとは、webページから特定の情報を抜き出す作業、あるいはその技術のことです。
クローリングとはwebページを巡回し、情報を抜き出すことです。スクレイピングとの違いは、巡回をするという事と、またwebページの特定の情報ではなく素の情報を抜き出すといった意味合いがクローリングには含まれます。
パースとはスクレイピングした情報を解析することです。
■何のためにスクレイピングをする?
株価の変動をリアルタイムで収集したり、自分が欲しいと思った画像を一括でダウンロードしたり、あるいは、やりようによってはアンケートサイトのアンケートに自動回答できるかもしれません。
web上の情報はビッグデータなので、機械学習などにも使用されます。これはアイディア次第です。
■スクレイピング時の注意事項
twitterがスクレイピングを禁止しているように、webサイトによってはスクレイピングを禁止しているところもあります。それは個人情報の観点と、スクレイピングの使い方を誤るとWebページを表示するサーバーに負荷をかける場合があるという観点からです。
そのサイトの利用規約をよく確認しましょう。
■pythonによる実装例
このwebページをスクレイピングの対象として実施します。
<HTMLコードを取得:標準ライブラリを使用>
from urllib.request import urlopen
f = urlopen("https://taketake2.com/R12.html")
encoding = f.info().get_content_charset(failobj="utf-8")
text = f.read().decode(encoding) # read(400)とすれば、取得する文字数を400に指定できる
print(text)
<HTMLコードを取得:reqestライブラリを使用>
reqestライブラリを使用する場合は以下となります。reqestのほうがより複雑なことも可能です。pythonライブラリインストール方法はこちら。
import requests
f = requests.get("https://taketake2.com/R12.html")
f.encoding = f.apparent_encoding
print(f.text)
<HTMLの所定コードを取得>
追加でBeautiful Soupというライブラリを使用します。aタグの要素を取り出します。
import requests
from bs4 import BeautifulSoup
f = requests.get("https://taketake2.com/R12.html")
f.encoding = f.apparent_encoding
f2 = BeautifulSoup(f.text, "lxml")
f3 = f2.find_all("a")
for data in f3:
print(data) # aタグの素の情報
print(data.text) # aタグ内の情報
print(data.get("href")) # aタグのリンク先情報
print("\n") # 見やすさのため改行
サブチャンネルあります。⇒ 何かのお役に立てればと
|