jupyterlab、BeautifulSoupを使って動的なページのスクレイピングをしたい

実現したいこと

抽出した要素をテキストに保存し、テキストの中に違いがあれば更新ありが出るようにしたい。

前提

スクレイピングについてなのですが、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 コメント