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__