実現したいこと
抽出した要素をテキストに保存し、テキストの中に違いがあれば更新ありが出るようにしたい。
前提
スクレイピングについてなのですが、jupyterlabとbeautifulsoupを使ってサイトの中にあるカレンダーから特定の要素を抽出したいです。カレンダーの枠の中には基本的にずっと×が出ているのですが、更新があると〇に切り替わるようになっているので、抽出した要素に〇が含まれていたら「更新あり」と出るようにしたいです。
発生している問題・エラーメッセージ
tdやtrが拾えていない
該当のソースコード
from bs4 import BeautifulSoup
import requests
def detect_updates():
url = 'https://samplesample.net'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser') current_tbody_text = str(soup.select('td')) try: with open('old_elem.txt', 'r') as f: old_elem = f.read() except FileNotFoundError: old_elem = '' if current_tbody_text == old_elem: print('変化なし') else: with open('old_elem.txt', 'w') as f: f.write(current_tbody_text) print('更新あり')
if name == "main":
detect_updates()
試したこと
最終的には抽出した要素を保存したテキストの中に〇があれば「更新あり」が出るようにしたいと思っているのですが、今のままではtdやtrが拾えていないのでテキストの中身が空白になってしまい、全く意味がない状態です。CSSセレクタ指定でも同様でした。また、テキストに保存しなくても抽出した要素に〇が含まれていたら「更新あり」が出るようにできるならそのほうがありがたいです。
補足情報(FW/ツールのバージョンなど)
OS:windows11Home
メモリ:32.0
jupyterlab:4.0.5
selenium:4.12.0

0 コメント