今日はスクレイピングしようと思ったら、Notfoundだらけで参りました。
一体なぜ?あれこれ動かしているうちに気がつきました。
「ページのソースを表示」するとあるはずのタグが出てこないことに。
Javascriptだったのですー・・・
(所要時間 1時間)
もしやと思い、「Javascript リンク先 隠す」で検索すると。
わかりました。これでした。つまり初期状態では存在しないコードだったのです!
そしてとある場所をクリックすると、小窓が開いてリンク先が表示されると。。。
うーん、一体どうしたらいいんでしょう。
あれこれネットの海をさまよっていると、
「Javascript python スクレイピング」で
SeleniumでPhantomJSを裏であやつるとできるらしい事がわかりました。
(所要時間 1時間)
ところが。PhantomJSはいろいろ終わってるらしくChromeを使うのがおしゃれらしい。
なるほど、とりあえずSeleniumとchromedriverをimportしました。
が、が、なかなかこれが動かない!かなり試行錯誤してできたのがこれです。
(所要時間 1時間)
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import chromedriver_binary
# ブラウザーを起動
options = Options()
browser = webdriver.Chrome(options=options)
url = "https://hogehoge"
browser.get(url)
browser.find_element_by_id('env001').click()
そんでもって、初期画面から最初のクリックするボタンのIDを探し出してclick()
してプログラムを起動すると・・・
Chromeがぴよーんと起動して、パッと小窓が開きました。お、おもしろい!!!
(所要時間 1時間)
小窓にはリンク先一覧があって、それぞれURLを取得してその先に行きたいので、
ほどよいタグを探したら、ありました!
towns = browser.find_elements_by_class_name("townlink")
これで一覧を取得して、
num = len(towns)
これで要素の数を取得して、
for i in range(num):
forで1つづつリンク先を見に行って、結果を出力です!
(所要時間 1時間)
結果をうまくまとめて出力するのにまた一苦労・・・
(所要時間 1時間)
今日は1日四苦八苦していました。
手作業の方がまだ早いくらいです笑
本日参考にしたサイトです。
【Python】Webスクレイピング サイトをマルッとダウンロード
PythonでWebページ情報を取得してみる
リンク先を隠す方法はないでしょうか?
【時短】ブラウザ自動操作ツール「Selenium」を使って面倒な操作を自動化しよう
ブラウザ操作の記録・自動実行を補助するツールを作ったけど供養します
[Python]seleniumでclick()ができない
Seleniumで画面遷移した後の画面で要素が取得できない問題の解消
Python Webスクレイピング テクニック集「取得できない値は無い」JavaScript対応@追記あり6/12
[Python] JavascriptでレンダリングされるWebページを、スクレイピングする
Seleniumで要ログインページをスクレイピングをした話(初心者目線)
Click button by find_element_by_class_name not working python selenium webdriver NOT working
PythonでSeleniumを使ってスクレイピング (基礎)
【Python入門】range関数で繰り返し処理をする方法とは?
【Python3】ブラウザを経由したスクレイピング(動的なページなど)【Selenium】
Pythonのwhile文によるループ処理(無限ループなど)
PythonでCSVファイルを読み込み・書き込み(入力・出力)