全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
14316 16
2014-12-06
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

选择201071日以前英国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是使用查看器在网页的相应标题上停留给出的节点位置,非常方便快捷。

QQ截图20141206073155.png

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"


如果有耐心,在看看书中的代码,不把你搞死不算完。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-12-7 00:02:23
不错不错。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-7 09:15:47
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-11 00:47:03
我想从一个网站上爬取数据,总共分页很多,但是一旦爬到一定的时候,网站最多会让我在不login的情况下,爬取15个页面的信息,也就是说我必须要login才能爬完所有的数据,在rvest中是如何实现login的?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-9 17:22:39
楼主有这方面的书么?关于rvest的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-13 18:01:48
好的分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群