結論
lxml
モジュールを使用します。beautifulsoup4でパースしたデータを一度lxml.html.HtmlElement
に変換することでXPATHからhtml要素を取得することができます。
前提
beautifulsoup4だけでなく、lxml
もインストールする必要があります。pip
などでインストールします。
pip install lxml
サンプルコード
サンプルコード作成のために、下記のページを使用させていただきました。
上記のページの各観光地の総合評価を取得しています。
.py
from lxml import html
import requests
from bs4 import BeautifulSoup
def main():
response = requests.get("https://scraping-for-beginner.herokuapp.com/ranking/")
soup = BeautifulSoup(response.content, "html.parser")
# 一度'lxml.html.HtmlElement'に変換する
lxml_data = html.fromstring(str(soup))
# XPathが指定できる
u_ranks = lxml_data.xpath("//div[contains(@class, 'u_rankBox')]/span[contains(@class, 'evaluateNumber')]")
for u_rank in u_ranks:
print(u_rank.text)
if __name__ == '__main__':
main()
結果
4.7
4.7
4.6
4.5
4.5
4.4
4.3
4.3
4.2
4.1
以上です。