現在動的サイトのスクレイピングをしており、サイトが変わるごとに取得したい情報を持っているクラスの名前が変わってしまうため、CSSセレクターを使い情報をスクレイピングしようと試みているのですが、うまく行く時と行かない時があり不安定な状況です。
以下がコードです。必要なライブラリなどはインストール済みです。
Python
1url = "https://www.ubereats.com/jp/feed?pl=JTdCJTIyYWRkcmVzcyUyMiUzQSUyMiVFNCVCQSVBQyVFOSU4MyVCRCVFNSVCOCU4MiUyMiUyQyUyMnJlZmVyZW5jZSUyMiUzQSUyMkNoSUo4Y004emRhb0FXQVJQUjI3YXpZZGxzQSUyMiUyQyUyMnJlZmVyZW5jZVR5cGUlMjIlM0ElMjJnb29nbGVfcGxhY2VzJTIyJTJDJTIybGF0aXR1ZGUlMjIlM0EzNS4wMTE1NjQlMkMlMjJsb25naXR1ZGUlMjIlM0ExMzUuNzY4MTQ4OSU3RA%3D%3D" 2 3driver = webdriver.Chrome() 4driver.get(url) 5time.sleep(5) 6 7soup = BeautifulSoup(driver.page_source,"html.parser") 8urls = soup.find_all(class_=["af fw", "af fu"]) 9url_list = ["https://www.ubereats.com" + url.a.get("href") for url in urls] 10 11for i in URL_list(): 12 driver.get(i) 13 time.sleep(3) 14 soup = BeautifulSoup(driver.page_source,"html.parser") 15 -> hours_selector = "#wrapper > div:nth-child(6) > div > div > div:nth-child(2) > div:nth-child(4) > div:nth-child(4) > table" 16 hours = soup.select_one(hours_selector).text 17 18print(hours)
矢印がついている部分で下記のエラーが起こります。
AttributeError: 'NoneType' object has no attribute 'text'
他の情報も矢印の部分と同様にCSSセレクターを使って情報をスクレイピングしているのですが問題なくスクレイピングできております。なぜかhours_selector
のコードの部分だけ毎回今回のようなエラーが起っております。
また新しいページに切り替わるたびにCSSセレクターのコードを新しくコピーし貼り付けてからスクレイピングをすると問題なくスクレイピングできます。
どなたか原因のわかる方いらっしゃいましたらご教授願います。
回答2件
あなたの回答
tips
プレビュー