BeautifulSoup

1$ pip3 install beautifulsoup4

ウェブページをスクレイプしたい

1import requests
2from bs4 import BeautifulSoup
3
4url = "https://example.com/"
5html = requests.get(url)
6soup = BeautifulSoup(html.content, "html.parser")

ウェブページの取得はrequestsを使います。 その内容をパース(=スクレイプ)するためにBeautifulSoupを使います。

タグで検索したい

1tag = soup.タグ名
2tag = soup.find("タグ名")
3tag = soup.select_one("タグ名")
4tags = soup.find_all("タグ名")
5tags = soup.select("タグ名")

soup.タグ名soup.find("タグ名")だと、最初のタグを拾うことができます。 すべてのタグを拾いたい場合はsoup.find_all("タグ名")を使います。 返り値はbs4.element.ResultSet型のオブジェクトですが、リストのように扱うことができます。

属性で検索したい

1tag = soup.find("タグ名", "属性と値")
2tags = soup.select("タグ名[属性と値]")
3tag = soup.find("a", href="検索したいURL")

クラス名で検索したい

1tag = soup.find("タグ名", class_="クラス名")
2tags = soup.select("CSSセレクタ")

タイトルを取得したい

1soup.title       # "<title>記事のタイトル</title>"
2soup.title.text  # "記事のタイトル"
3soup.title.name  # "title" = タグ名

リンクのURLを取得したい

1soup.a.get("href")
2soup.find("a").get("href")
3[tag.get("href") for tag in soup.find_all("a")]

<a href="URL" class="...">のようなaタグの属性値hrefを拾うことができます。 複数のaタグのURLを拾いたい場合は、リスト内包表記を使います。

バージョンを確認したい

1import bs4
2bs4.__version__

リファレンス