求教R语言爬虫代码-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 软件培训>>

SAS软件培训

>>

求教R语言爬虫代码

求教R语言爬虫代码

发布:溪流奔大海 | 分类:SAS软件培训

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

经管之家新媒体交易平台

提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

提供微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

求教如下代码:install.packages("rvest")library(dplyr)library(rvest)web<-read_html("https://book.douban.com/top250?icn=index-book250-all",encoding="UTF-8")positions<-web%>%html_nodes( ...
坛友互助群


扫码加入各岗位、行业、专业交流群


求教如下代码:
install.packages("rvest")
library(dplyr)
library(rvest)
web<-read_html("https://book.douban.com/top250?icn=index-book250-all",encoding="UTF-8")
positions<-web %>%
html_nodes("#content a") %>%
html_text()
代码没有错误啊,网址也正常,就是R语言跑如上代码要导致系统溢出。
求教各位大神
代码来源于如下:
##运用SelectorGadget插件快速定位
###安装
首先安装SelectorGadget插件,点击<https://cran.r-project.org/web/packages/rvest/vignettes/selectorgadget.html> 中的Installation,SelectorGadget链接。或<http://selectorgadget.com/> Chrome 扩展。
###使用
点击插件后,在网页最下面会启动对话框,同时会有highlight(黄色)框框随鼠标滑动,当点击需要提取的信息时,选择框会变为绿色,SelectorGadget对话框将产生minimal CSS 选择语句。同时匹配语句的元素也会变黄,当再次点击黄色元素时,选择器变为红色,表示排除所选元素。当点击未标黄元素时,表示增加相应的元素,SelectorGadget对话框会随选择元素而发生变化。点击XPath时,会自动根据选择元素自动转换为xpath语法。

##rvest爬取数据
以爬取豆瓣数据为例:
```{r}
#查看书的信息
install.packages("rvest")
library(dplyr)
library(rvest)
web<-read_html("https://book.douban.com/top250?icn=index-book250-all",encoding="UTF-8")
positions<-web %>%
html_nodes("#content a") %>%
html_text()
```
#字符串清理
#去掉多余的空格,“\n”等信息
to_remove <- paste(c("\n","^\\s+|\\s+$"),collapse = "|")
position <- gsub(to_remove,"",positions)
iconv(position,"UTF-8","gb2312")
```{r}
#查看书的题目
position<-web %>%
html_nodes(".pl2 a") %>%
html_text()
#查看encod编码类型
library(stringi)
stri_enc_detect(position)
#转换编码类型
position<-iconv(position,"UTF-8","gb2312")
```
```{r}
#字符串清理
#去掉多余的空格,“\n”等信息
to_remove <- paste(c("\n","^\\s+|\\s+$"),collapse = "|")
position <- gsub(to_remove,"",position)
```
第一行是加载Rvest包。第二行是用“read_html函数读取网页信息(类似Rcurl里的getURL),在这个函数里只需写清楚网址和编码(一般就是UTF-8)即可第三行是获取节点信息。用%>%符号进行层级划分。web就是之前存储网页信息的变量,所以我们从这里开始,然后html_nodes()函数获取网页里的相应节点。在下面代码里我简单的重现了原网页里的一个层级结构。可以看到,实际上我们要爬取的信息在25个class属性为pl的<p>标签里的文本。

<p class=pl>
[清] 曹雪芹 著 / 人民文学出版社 / 1996-12 / 59.70元
</p>
而对于这样的结构,在htmlnodes()函数里的写法就是简单的"p.pl",其中“.”表示class属性的值,如果是id属性则用“#”,如果大家学过CSS选择器就很好理解了,是完全一致的。
最后我们用html_text()函数表示获取文本信息,否则返回的是整个<p>标签。总体上用以下一行代码就可以实现:
```{r,eval=FALSE, include=TRUE}
position<-web %>%
html_nodes("p.pl") %>%
html_text()
```
比较与XML获取节点的方法(如下行代码),其实二者是异曲同工的,只不过将“/”分隔换为了“%>%”,同时个别写法有些许调整。

```{r, eval=FALSE, include=TRUE}
node<-getNodeSet(pagetree, "//p[@class='pl']/text()")
```
最终如果我们打印出这个变量的内容,就会发现和上篇文章中的爬取内容是一致的。
Rvest这个包的说明文档里给出了一些其他例子:
```{r}
ateam <- read_html("http://www.boxofficemojo.com/movies/?id=ateam.htm")
#两行代码分别获取了ateam这个网页里<center>标签里<td>的全部内容和<center>标签里<font>的全部内容
ateam %>% html_nodes("center") %>% html_nodes("td")
ateam %>% html_nodes("center") %>% html_nodes("font")
#官方例子中还给出了获取特定序位的html标签的方法,用到了magrittr包里的extract2函数;以下两行代码都可以获得该网页中第一个<table>标签(由extract2(1)或`[[`(1)获取)中的所有<img>标签里的内容。
library(magrittr)
ateam %>% html_nodes("table") %>% extract2(1) %>% html_nodes("img")
ateam %>% html_nodes("table") %>% `[[`(1) %>% html_nodes("img")
#同理我们也可以获得网页里前两个<table>标签储存的所有<img>标签里的内容。
ateam %>% html_nodes("table") %>% `[`(1:2) %>% html_nodes("img")
ateam %>% html_nodes("table") %>% extract(1:2) %>% html_nodes("img")
```
扫码或添加微信号:坛友素质互助


「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-5578571-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
经管之家 人大经济论坛 大学 专业 手机版