PythonでChrome操作して現在の天気を取得したい
seleniumを使って天気情報を取得したいのですがどうしてもうまくいきません
Chromeを起動
↓
「天気 東京」と検索欄に入力して検索
↓
検索結果の上部欄に現在の温度、降水確率、湿度、風速が表示される
↓
現在表示されているページのhtmlを取得
↓
取得したhtmlから温度、降水確率、湿度、風速の要素を取得、抽出し、出力
という感じでChrome経由で取得したいと思っています
python
1from selenium import webdriver 2import time 3 4chro = webdriver.Chrome() 5 6chro.get("https://www.google.co.jp/") 7 8time.sleep(1) 9elem_search_word = chro.find_element_by_class_name("gsfi") 10time.sleep(1) 11elem_search_word.send_keys("天気 東京") 12 13time.sleep(1) 14 15elem_search_kensaku = chro.find_element_by_class_name("lsb") 16time.sleep(1) 17elem_search_kensaku.click() 18 19print(chro.page_source) 20
と上記のプログラムを作成し、実行
Chromeを起動し、グーグルサイトで「天気 東京」と検索、htmlを抽出するというところまではできました
(略) style="display:inline;text-decoration:none;margin-left:-1px" data-url="/setprefs?fheit=1&sig=0_shwiVnSy4G9K62oo8K2CVA-PYCA=&prev=https://www.google.co.jp/search%3Fsource%3Dhp%26ei%3DZNzDWp6ODoew0gSPkZT4Dg%26q%3D%25E5%25A4%25A9%25E6%25B0%2597%2B%25E6%259D%25B1%25E4%25BA%25AC%26oq%3D%25E5%25A4%25A9%25E6%25B0%2597%2B%25E6%259D%25B1%25E4%25BA%25AC%26gs_l%3Dpsy-ab.13..0l8.2295.2334.0.4496.5.2.0.0.0.0.170.281.0j2.2.0....0...1c.1.64.psy-ab..3.2.281...0i131k1.0.wdTkbIwZtwA" role="button" jsaction="wob.t" data-ved="0ahUKEwiVpPLP8Z7aAhWFmJQKHf_PCmIQ-1sIJzAA"><span aria-label="°Fahrenheit">°F</span></a><span class="wob_t" style="display:none;margin-left:-1px" aria-label="°Fahrenheit" aria-disabled="true" role="button">°F</span></div></div></div><div class="vk_gy vk_sh wob-dtl" style="float:right;padding-left:5px;line-height:22px;padding-top:2px;min-width:43%"><div>降水確率: <span id="wob_pp">10%</span></div><div>湿度: <span id="wob_hm">52%</span></div><div>風速: <span><span class="wob_t" id="wob_ws">7 m/s</span><span class="wob_t" style="display:none" id="wob_tws">7 m/s</span></span></div><div style="height:23px;overflow:hidden;padding:15px 0 9px"><div class="ksb uE5Hoc ksbs" aria-disabled="true" id="wob_temp" role="button" tabindex="0" style="display:inline-block">温度</div><div class="ksb PXcN4c uE5Hoc" aria-disabled="false" id="wob_rain" role="button" tabindex="0" style="display:inline-block">降水確率</div><div class="ksb PXcN4c" aria-disabled="fal (略)
上下の部分は省略していますがhtmlは抽出できました
ただその次の、上記のhtmlに温度、降水確率、湿度、風速の要素が含まれていますがこれらの要素から抽出するということがなかなかうまくできません
どうしたら抽出できるんでしょうか
試したこと
reを使ってhtmlから抽出しようとしました
from selenium import webdriver import time chro = webdriver.Chrome() chro.get("https://www.google.co.jp/") time.sleep(1) elem_search_word = chro.find_element_by_class_name("gsfi") time.sleep(1) elem_search_word.send_keys("天気 東京") time.sleep(1) elem_search_kensaku = chro.find_element_by_class_name("lsb") time.sleep(1) elem_search_kensaku.click() tenki = chro.page_source pattern=r'([+-]?[0-9]*)' import re lists=re.findall(pattern,tenki) suji = lists[0] print(suji)
と下部にプログラムを追加しましたがなにも主力もされず、エラーも出ませんでした
そもそもhtmlが長すぎて絞りきれてないのが原因だと思うんですが
Beautifulsoupを使えば要素を抜き出して抽出できるとは思うんですがただ今回はどうしてもブラウザ経由で抽出したいです
どうしたら良いでしょうか
補足情報(FW/ツールのバージョンなど)
Windows8.1
Python3.6.3
Pycharm
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。