相似文件
换一批
经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
rvest实乃利器,RCurl和XML相形见绌。
以
Automated Data Collection with R中的第十章的数据下载为例,比较一下两者的优劣。
数据源自英国ZF的一个新闻网站,网址是:
https://www.gov.uk/government/announcements?keywords=&announcem
ent_type_option=press-releases&topics[]=all&departments[]=all&
world_locations[]=all&from_date=&to_date=01%2F07%2F2010
选择2010 年 7 月 1 日以前英国ZF相关部门所发的新闻,总计 749 篇,包含在 19 个网页中。
数据提取的第一个任务就是将这749 篇新闻的链接路径保存在本地硬盘上。浏览网页,发现除了第一个网页外,其它 18 个网页都是有规律的,这样提取网页标题就分两步走:
library(rvest) #抓取网页数据
library(stringr) #处理文本
# 第一页网址
url = 'https://www.gov.uk/government/announcements?keywords=&announcement_type_option=press-releases&topics[]=all&departments[]=all&world_locations[]=all&from_date=&to_date=01%2F07%2F2010'
first = url %>% html() %>% html_nodes("h3 a") %>% html_attrs()
# h3 a是使用查看器在网页的相应标题上停留给出的节点位置,非常方便快捷。
first = as.character(first)
# 其它 18 页网址
others = sapply(2:19,function(i) str_c("https://www.gov.uk/government/announcements?announcement_type_option=press-releases&departments%5B%5D=all&from_date=&keywords=&page=",i,"&to_date=01%2F07%2F2010&topics%5B%5D=all&world_locations%5B%5D=all"))
myfun = function(x) {
b = others[x] %>% html() %>% html_nodes("h3 a") %>% html_attrs()
as.character(b)
}
doc = sapply(1:18,myfun)
# 第一页加上 18 页总计 19 页。
dat = c(first,unlist(doc))
dat = str_c("https://www.gov.uk",dat)
#建立一个目录,把网址数据保留起来
dir.create("F:/Press_Releases")
for(i in 1:length(dat)) write(dat, file = str_c("F:/Press_Releases/", i, ".html"))
# 验证一下
length(list.files("F:/Press_Releases"))
[1] 749
list.files("F:/Press_Releases")[1:3]
[1] "1.html" "10.html" "100.html"
如果有耐心,在看看书中的代码,不把你搞死不算完。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝