前提・実現したいこと
webスクレイピング初心者です。
サイトのあるテキストだけ取りたいと思っています。
しかし、以下のコードを実行すると、実行可能な時と不可能な時があります。
このような場合、どのように対処すればいいのかを教えていただきたいです。
また、他のテキストの取り出し方法などがあれば教えていただきたいです。
発生している問題・エラーメッセージ
AttributeError Traceback (most recent call last) <ipython-input-34-86dad44d7856> in <module> 16 # BeautifulSoupで扱えるようにパースします 17 soup = BeautifulSoup(html, "html.parser") ---> 18 msg1 = soup.select_one("#app > div > div > div.mainContainer > div > div > div.row.DataBlock > div:nth-child(10) > div > header > div > div:nth-child(3) > span").text 19 msg1 = re.sub(r"\s","",msg) AttributeError: 'NoneType' object has no attribute 'text'
該当のソースコード
python
1from selenium import webdriver 2from bs4 import BeautifulSoup 3import re 4 5driver_path="/Users/sishi/Anaconda3/chromedriver" 6#Chromeを操作 7driver = webdriver.Chrome(driver_path) 8 9url="https://www.pref.kanagawa.jp/osirase/1369/" 10driver.get(url) 11 12html = driver.page_source.encode('utf-8') 13 14# BeautifulSoupで扱えるようにパースします 15soup = BeautifulSoup(html, "html.parser") 16msg1 = soup.select_one("#app > div > div > div.mainContainer > div > div > div.row.DataBlock > div:nth-child(10) > div > header > div > div:nth-child(3) > span").text 17msg1 = re.sub(r"\s","",msg1)
試したこと
ChromeからCSSセレクタをコピペで取り出すと、冗長であったりうまくいかない場合があると書いてあったのですが、この場合どこを短縮して、どのようにセレクタを取り出せばいいのかわかりらず断念してしまいました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。