前提・実現したいこと
前回このサイトで質問したことを踏まえ、seleniumを使ってJavascriptの取得を始めました。
最初は順調にいったのですが、東京メトロの銀座線、丸ノ内線、日比谷線と取得しようとしたときに一番上のページ(この場合だと銀座線)しか取得できない事態がおきました。
ほかに西武鉄道や東武鉄道などはうまくいったので同サイトだからなのか?とも思ったのですが解決法が全く分かりません...
from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options import Options import chromedriver_binary options = Options() options.add_argument('--headless') driver = webdriver.Chrome(options=options) driver.get('https://www.tokyometro.jp/unkou/history/ginza.html') html = driver.page_source soup = BeautifulSoup(html, 'lxml') text = soup.find(class_='v2_unkouReportInfo').text print('銀座線:'+text.strip()) driver.get('https://www.tokyometro.jp/unkou/history/marunouchi.html') html = driver.page_source soup = BeautifulSoup(html, 'lxml') text = soup.find(class_='v2_unkouReportInfo').text print('丸ノ内線:'+text.strip()) driver.get('https://www.tokyometro.jp/unkou/history/hibiya.html') html = driver.page_source soup = BeautifulSoup(html, 'lxml') text = soup.find(class_='v2_unkouReportInfo').text print('日比谷線:'+text.strip()) driver.quit()
で、結果がこれです。
銀座線:平常運転現在、平常どおり運転しています。 丸ノ内線: 日比谷線: Process finished with exit code 0
どうやらhtmlがうまく取得できていないみたいなんです。
銀座線
<div class="v2_unkouReportInfo"> <div class="v2_unkouReportTxt"><div class="v2_unkouReportTxtHeading"><div class="v2_unkouReportTxtIcon"><img style="" src="/library/common/img/unkou/icon_unkou_heijou.png" alt="" class="v2_unkouReportTxtImg"></div><div class="v2_unkouReportTxtCaption"><p class="">平常運転</p></div></div><p>現在、平常どおり運転しています。</p></div> </div>
丸の内線
<div class="v2_unkouReportInfo"> <div class="v2_unkouReportTxt"> </div> </div>
なんで同じコードを書いたのに二つ目以降だけ取得できないんですかね...?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/19 06:24
2019/11/19 06:29
2019/11/19 06:36