指定した検索キーワードの新着アプリが出たら通知するようにしたいなと思ってスクレイピングを試していたのでそのメモ
import requests
from bs4 import BeautifulSoup
def search_app_list(self, keyword: str) -> list[str]:
// 検索結果ページのURL
search_url = f"https://play.google.com/store/search?q={keyword}"
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.31'
}
// 検索結果ページのHTMLを取得
response = requests.get(search_url, headers=headers)
soup = BeautifulSoup(response_text, 'html.parser')
// セレクタを指定してアプリ名の一覧を抽出
app_names = []
for app in soup.select('div[role="listitem"]'):
element = app.select_one('div > div > div > a > div:nth-child(2) > div > div > span')
if element is not None:
app_name = element.text
app_names.append(app_name)
return app_names
requests.getを呼び出す時にヘッダにUAを付けていますが、UAが無いと想定した結果(実際にストアで検索した時の結果)が返ってこなかったので付けてます。
コメント