webスクレイピングとは何ができるのしょうか?
このような疑問にお答えします。
Webスクレイピングとはウェブサイトから情報を自動収集することができる技術です。 例えば、snsの膨大なデータを対象として、自動的に時系列的なトレンドの変化、 人気のトピックをランキング形式で出力する等のマーケティングで活用できる 情報を効率的に収集することができます。
スクレイピングを実行するにあたり、注意点があります。ウェブサイトによっては、無許可のスクレイピングが禁止されている場合があり、 違反行為と判断され法的に罰せられる可能性もあります。データ収集を考えている各サイトのルールを確認しましょう。
今回は、wikipediaの”Python”の説明記事を対象にrequestsを用いてwebページの情報を取得し、BeautifulSoupを用いてHTMLを解析し、リンク情報を抽出する簡単なwebスクレイピングのプログラムを紹介します。
requests、BeautifulSoupがない場合は、インストールしましょう。本記事では、anaconda promptで実行していきます。
1 2 |
pip install requests pip install beautifulsoup4 |
以下にソースコードを記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# coding: utf-8 from bs4 import BeautifulSoup import requests import re def proc_scraping(): url = 'https://ja.wikipedia.org/wiki/Python' res = requests.get(url) soup = BeautifulSoup(res.text, "html.parser") index = soup.find_all("p") for p_tag in index: a_tag = p_tag.find_all("a") for data in a_tag: res = re.search(r'[0-9]+', data.text) if res is None: print(data.text) print("https://ja.wikipedia.org" + data.get('href')) if __name__ == '__main__': proc_scraping() |
このプログラムでは、’https://ja.wikipedia.org/wiki/Python’をrequestsに渡し、webページの情報を取得します。そして、BeautifulSoupで先ほど受け取った情報に対して、HTML解析を実施しています。
次に、’Python’をキーワードとして、それに関連する単語と、その単語の説明先リンクを収集対象としてスクレイピングしています。wikipediaのHTMLコードを確認すると、pタグ内に検索対象である’Python’に関連した単語の記載が見られたため、pタグ内にあるaタグをサーチすることで、 ‘Python’の関連語とそのリンク構造を抽出することを想定しています。