[问题] 抓取气象局地震资料

楼主: 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