LoginSignup
2
3

More than 3 years have passed since last update.

43日目、Javascriptで小窓が開いた先でスクレイピング

Posted at

今日はスクレイピングしようと思ったら、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ファイルを読み込み・書き込み(入力・出力)

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3