使用R在一天之内使用4个网址从网站上抓取数据

丰克-蒙克

我正在尝试从马来西亚环境部的网站上抓取所有历史性的空气污染指数数据,该数据将所有站点的数据分成每天每天4小时的链接,如下所示

http://apims.doe.gov.my/apims/hourly1.php?date=20130701 http://apims.doe.gov.my/apims/hourly2.php?date=20130701

与上面的“ hourly3.php?”相同 和“ hourly4.php?”

我对R只是有点熟悉,所以使用XML或scrapeR库最简单的方法是什么?

hrbrmstr

您可以使用列表操作将所有表变成一个宽数据框:

library(rvest)
library(magrittr)
library(dplyr)

date <- 20130701
rng <- c(1:4)

my_tabs <- lapply(rng, function(i) {
  url <- sprintf("http://apims.doe.gov.my/apims/hourly%d.php?date=%s", i, date)
  pg <- html(url)
  pg %>% html_nodes("table") %>% extract2(1) %>% html_table(header=TRUE)
})

glimpse(plyr::join_all(my_tabs, by=colnames(my_tabs[[1]][1:2])))

## Observations: 52
## Variables:
## $ NEGERI / STATE   (chr) "Johor", "Johor", "Johor", "Johor", "Kedah...
## $ KAWASAN/AREA     (chr) "Kota Tinggi", "Larkin Lama", "Muar", "Pas...
## $ MASA/TIME12:00AM (chr) "63*", "53*", "51*", "55*", "37*", "48*", ...
## $ MASA/TIME01:00AM (chr) "62*", "52*", "52*", "55*", "36*", "48*", ...
## $ MASA/TIME02:00AM (chr) "61*", "51*", "53*", "55*", "35*", "48*", ...
## $ MASA/TIME03:00AM (chr) "60*", "50*", "54*", "55*", "35*", "48*", ...
## $ MASA/TIME04:00AM (chr) "59*", "49*", "54*", "54*", "34*", "47*", ...
## $ MASA/TIME05:00AM (chr) "58*", "48*", "54*", "54*", "34*", "45*", ...
## $ MASA/TIME06:00AM (chr) "57*", "47*", "53*", "53*", "33*", "45*", ...
## $ MASA/TIME07:00AM (chr) "57*", "46*", "52*", "53*", "32*", "45*", ...
## $ MASA/TIME08:00AM (chr) "56*", "45*", "52*", "52*", "32*", "44*", ...
## ...

plyr由于与的命名冲突,我很少再实际加载/使用了,dplyr但是join_all非常适合这种情况。

您也可能需要长格式的以下数据:

plyr::join_all(my_tabs, by=colnames(my_tabs[[1]][1:2])) %>% 
  tidyr::gather(masa, nilai, -1, -2) %>%
# better column names
  rename(nigeri=`NEGERI / STATE`, kawasan=`KAWASAN/AREA`) %>%  
# cleanup & convert time (using local timezone)
# make readings numeric; NA will sub for #
  mutate(masa=gsub("MASA/TIME", "", masa), 
         masa=as.POSIXct(sprintf("%s %s", date, masa), format="%Y%m%d %H:%M%p", tz="Asia/Kuala_Lumpur"),
         nilai=as.numeric(gsub("[[:punct:]]+", "", nilai))) -> pollut

head(pollut)
##   nigeri                 kawasan                masa nilai
## 1  Johor             Kota Tinggi 2013-07-01 12:00:00    63
## 2  Johor             Larkin Lama 2013-07-01 12:00:00    53
## 3  Johor                    Muar 2013-07-01 12:00:00    51
## 4  Johor            Pasir Gudang 2013-07-01 12:00:00    55
## 5  Kedah              Alor Setar 2013-07-01 12:00:00    37
## 6  Kedah Bakar Arang, Sg. Petani 2013-07-01 12:00:00    48

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

烦恼如何从该网站上抓取数据(使用R)

来自分类Dev

如何使用Selenium / Python在分页网站上抓取网址

来自分类Dev

使用Google Analytics(分析)追踪网站上一个网址的使用者

来自分类Dev

使用简单HTML DOM从网站上抓取数据视图的价值

来自分类Dev

使用R(rvest)从金融网站上进行网页抓取数据

来自分类Dev

使用网站的网址抓取HTML

来自分类Dev

使用网站的网址抓取html

来自分类Dev

如何使用Python从网站上抓取文字

来自分类Dev

使用Excel VBA从网站上抓取文字

来自分类Dev

如何使用Flutter从网站上抓取图像?

来自分类Dev

使用Excel VBA从网站上抓取文字

来自分类Dev

使用 rvest 从网站上抓取表格

来自分类Dev

使用 DateTime 值过滤前一天的数据

来自分类Dev

PHP从网站上抓取数据

来自分类Dev

如何从网站上抓取数据?

来自分类Dev

如何使用scrapy抓取将网址隐藏为href =“ javascript :;”的网站 在下一个按钮中

来自分类Dev

在不使用循环或变量的情况下从一个月的最后一天获取数据

来自分类Dev

使用HtmlAgilityPack从网站上抓取数据时,子节点的文本出现问题

来自分类Dev

如何使用python中的BeautifulSoup库从具有“查看更多”选项的网站上抓取数据

来自分类Dev

一天之内的处理器统计信息

来自分类Dev

Web使用python从同一网站上抓取页面列表

来自分类Dev

如何使用另一个网站在一个网站上上传文件

来自分类Dev

如何使用Beautifulsoup从网站上抓取产品价格?

来自分类Dev

如何使用BeautifulSoup从eCom网站上抓取<li>?

来自分类Dev

如何使用 VBA 从网站上抓取选项值

来自分类Dev

如何使用R从框架内的网站抓取数据?

来自分类Dev

使用R进行网页抓取-未加载完整的网站数据

来自分类Dev

使用 JavaScript 抓取网站 -> 可能以及在抓取的网站上显示哪个 IP

来自分类Dev

R:添加重复的行,其中日期会在一天之内更改回设置的日期

Related 相关文章

  1. 1

    烦恼如何从该网站上抓取数据(使用R)

  2. 2

    如何使用Selenium / Python在分页网站上抓取网址

  3. 3

    使用Google Analytics(分析)追踪网站上一个网址的使用者

  4. 4

    使用简单HTML DOM从网站上抓取数据视图的价值

  5. 5

    使用R(rvest)从金融网站上进行网页抓取数据

  6. 6

    使用网站的网址抓取HTML

  7. 7

    使用网站的网址抓取html

  8. 8

    如何使用Python从网站上抓取文字

  9. 9

    使用Excel VBA从网站上抓取文字

  10. 10

    如何使用Flutter从网站上抓取图像?

  11. 11

    使用Excel VBA从网站上抓取文字

  12. 12

    使用 rvest 从网站上抓取表格

  13. 13

    使用 DateTime 值过滤前一天的数据

  14. 14

    PHP从网站上抓取数据

  15. 15

    如何从网站上抓取数据?

  16. 16

    如何使用scrapy抓取将网址隐藏为href =“ javascript :;”的网站 在下一个按钮中

  17. 17

    在不使用循环或变量的情况下从一个月的最后一天获取数据

  18. 18

    使用HtmlAgilityPack从网站上抓取数据时,子节点的文本出现问题

  19. 19

    如何使用python中的BeautifulSoup库从具有“查看更多”选项的网站上抓取数据

  20. 20

    一天之内的处理器统计信息

  21. 21

    Web使用python从同一网站上抓取页面列表

  22. 22

    如何使用另一个网站在一个网站上上传文件

  23. 23

    如何使用Beautifulsoup从网站上抓取产品价格?

  24. 24

    如何使用BeautifulSoup从eCom网站上抓取<li>?

  25. 25

    如何使用 VBA 从网站上抓取选项值

  26. 26

    如何使用R从框架内的网站抓取数据?

  27. 27

    使用R进行网页抓取-未加载完整的网站数据

  28. 28

    使用 JavaScript 抓取网站 -> 可能以及在抓取的网站上显示哪个 IP

  29. 29

    R:添加重复的行,其中日期会在一天之内更改回设置的日期

热门标签

归档