[問題] 抓取氣象局地震資料

作者: hanglong (小煥)   2019-09-11 11:46:02
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
我想要抓台灣每次地震,固定地點的震度
[軟體熟悉度]:
新手(沒寫過程式,R 是我的第一次)
[問題敘述]:
以台灣時間09-11 05:24的地震為例,它的網址是:
https://scweb.cwb.gov.tw/zh-tw/earthquake/details/2019091105245636
以此網址為例,我可以擷取固定地點,例如 玉山 的資料
但是地震發生很多次,每次的網址都不一樣,不可能每次都手動抓網址,
再用R抓到玉山的震度。
我在地震資料的網址中,可以從原始碼中看到每個地震的連結,
https://scweb.cwb.gov.tw/zh-tw/earthquake/data/
因此,如果有辦法可以從這裡擷取到每次地震的網址,
應該就可以完成我的需求,但是這個網址的部分,不知道該如何擷取,
在請版上的各位先進幫忙,謝謝。
[程式範例]:
在https://scweb.cwb.gov.tw/zh-tw/earthquake/details/2019091105245636之下
利用以下程式,可以看到玉山的震度:
data <-
read_html("https://scweb.cwb.gov.tw/zh-tw/earthquake/details/2019091105245636")
ths <- xml_find_all(data, "//div/ul/li")
xml_text(ths)[substring(xml_text(ths),1,2) == "玉山"]
[1] "玉山 1"
但在https://scweb.cwb.gov.tw/zh-tw/earthquake/data/之下,
我想要用一樣的方式,至少先擷取出網址的位置,結果什麼都沒有...
程式如下:
data <-
read_html("https://scweb.cwb.gov.tw/zh-tw/earthquake/data/")
ths <- xml_find_all(data, "//div/table/tbody/tr/td/a")
xml_text(ths)
character(0)
[環境敘述]:
請提供 sessionInfo() 的輸出結果,
R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 LC_CTYPE=Chinese
(Traditional)_Taiwan.950 LC_MONETARY=Chinese (Traditional)_Taiwan.950
LC_NUMERIC=C
[5] LC_TIME=Chinese (Traditional)_Taiwan.950
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] xml2_1.2.2 curl_3.3 swirl_101.5.9
loaded via a namespace (and not attached):
[1] Rcpp_1.0.2 pvm_0.4.2.4 later_0.8.0 digest_0.6.20
bitops_1.0-6 R6_2.4.0 jsonlite_1.6 magrittr_1.5 httr_1.4.0
rlang_0.4.0 stringi_1.4.3
[12] promises_1.0.1 testthat_2.1.1 tools_3.6.1 stringr_1.4.0
RCurl_1.95-4.12 httpuv_1.5.1 yaml_2.2.0 compiler_3.6.1
[關鍵字]:
中央氣象局 地震
作者: celestialgod (天)   2019-09-11 12:51:00
作者: cywhale (cywhale)   2019-09-11 12:57:00
氣象局的Open API做得不錯,建議可用它撈資料http://bit.ly/2LHYMaH 往下拉找地震 你先要有會員token
作者: andrew43 (討厭有好心推文後刪文者)   2019-09-11 15:26:00
在表格中的<tr>的id就能知道各網址尾巴的代碼了喔而你用<a>去找,那東西本來就不存在,自然找不到。更正,表格是動態生成的,直接抓會抓不到。要撈動態網頁可以用RSelenium之類的,看看上一篇。
作者: cywhale (cywhale)   2019-09-11 16:00:00
我使用CWB open api code: http://bit.ly/2LMLiuf試試看,你要換成你的token ?Authorization= 這裡

Links booklink

Contact Us: admin [ a t ] ucptt.com