技術雑記帳兼日記帳

AWS、Python、Terraformの使い方をコッソリ

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 
特別:新しいページ
タチジャコウソウ
シソ科
イブキジャコウソウ属
多年生植物
ハーブ
香辛料
和名
麝香
衝動買い
ブランド
ヨーゼフ・メルク
17951181852616日
ウィーン
チェリスト
ウィーン国立歌劇場
チェロ
ウィーン国立音楽大学
ギター
ヴァイオリン
フランシス・グレスナー・リー
18783251962127日
アメリカ合衆国
法科学
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メソッドで取るのかなぁ?
何にしてもスクレイピングは以外と面白いな。