python スクレイピング その1
はじめに
この本を買ったので、学習成果をまとめていく。
準備
スクレイピングでWikipediaの「今日は何の日」を取得するんだけど芸がないので、「新しい記事」のリンクのタイトルをすべて取得してみる。
- newArticles.py
import requests from bs4 import BeautifulSoup url = 'https://ja.wikipedia.org/' resp = requests.get(url) soup = BeautifulSoup(resp.content, 'html.parser') new_articles = soup.find("div", attrs={"id": "new_articles"}) links = new_articles.find_all('a') for link in links: print(link.get('title'))
- 実行方法と結果
$ python newArticles.py 特別:新しいページ タチジャコウソウ シソ科 イブキジャコウソウ属 多年生植物 ハーブ 香辛料 和名 麝香 衝動買い ブランド ヨーゼフ・メルク 1795年 1月18日 1852年 6月16日 ウィーン チェリスト ウィーン国立歌劇場 チェロ ウィーン国立音楽大学 ギター ヴァイオリン フランシス・グレスナー・リー 1878年 3月25日 1962年 1月27日 アメリカ合衆国 法科学 1/12スケール (存在しないページ) ドールハウス ジオラマ Wikipedia:メインページ新着投票所 Wikipedia:月間新記事賞
- 簡単な解説
resp = requests.get(url)
soup = BeautifulSoup(resp.content, 'html.parser')
ここでリクエストを投げて、取得したレスポンスをBeautifulSoupでhtml.parserする。
new_articles = soup.find("div", attrs={"id": "new_articles"}) links = new_articles.find_all('a')
div要素でIDがnew_articlesの要素を取り出して、a Tagの要素(hrefやtitle)を取り出す。
for link in links: print(link.get('title'))
取得したlinkの要素titleをgetメソッドで取得する。
まとめ
find_allタグ全体とって、要素をgetメソッドで取るのかなぁ?
何にしてもスクレイピングは以外と面白いな。