R语言中rvest包爬虫代码+示例讲解(爬取当当网)
R语言中rvest包爬虫代码+讲解
- rvest包
- 确定节点
- R爬虫示例:爬取当当网销量数据
rvest包
R语言中有许多用于爬取数据的包,本篇文章主要讲解rvest包的使用。首先讲解rvest包中的主要函数。
1.read_html():用于读取html(文档)的函数;
2.html_nodes():用于选取文档中指定的元素、节点的部分;
3.html_text():用于提取标签中的文本;
4.html_attrs():用于提取属性名称及其内容。
使用rvest包爬取数据简单易懂,本篇文章详解了节点确认并用示例加深印象,非常适合爬虫小白入手。
确定节点
用rvest包对网页数据进行爬取时,爬取的难点及重点都是如何确认html_nodes函数中的节点参数,为节省爬取数据的时间和精力,我们应该借助强大的谷歌插件CSS生成器——Selectorgadget插件,它有助于我们快速找到html的节点信息,所以本篇文章会详细讲解如何准确确认节点。
1.工具:Selectorgadget插件
2.下载方式:可参照我上一篇博客,直接下载,压缩包内附有安装步骤
3.使用方式:
(1)打开一个网页,如dangdang
(2)开启SelectorGadget(点击一个放大镜图案的按钮即可);
移动鼠标箭头到一个页面元素上并单击,该页面元素会变成绿色,SelectorGadget的文本框内显示出被选中页面元素的css path类型的定位字符串。“clear”按钮可以清空定位字符串,“clear”按钮中的数字是指定位字符串可以匹配的页面元素个数,其它具有相同定位字符串的页面元素都将变为黄色。单击这些黄色的页面元素,这些元素变为红色,表示剔除它们,用这种方式不断改变定位字符串,最终生成被选中元素的特有的定位字符串。
R爬虫示例:爬取当当网销量数据
运用R语言爬取当当网的销量排行等信息,并把数据保存在E盘csv文件中。
```#爬取当当网数据,成功自己实现
library(rvest)
library(stringr)
url <- "http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1"
web <- read_html(url, encoding = "gbk")#排行
rank <- web %>% html_nodes(".list_num") %>% html_text() %>% as.numeric()#书名
title <- web %>% html_nodes(" .name a") %>% html_text()#作者
writer <- web %>% html_nodes(".publisher_info a:nth-child(1)") %>% html_text()#价格
price <- web %>% html_nodes("p:nth-child(1) .price_n") %>% html_text() %>%str_match("[0-9]{2}.[0-9]{2}")%>%as.numeric()#出版日期
date <- web %>% html_nodes(".publisher_info span") %>% html_text() %>% as.Date()#出版地址
publication_company <- web %>% html_nodes(".publisher_info span+ a") %>% html_text()#折扣
discount <- web %>% html_nodes(".price_s") %>% html_text()#推荐率
tuijian <- web %>% html_nodes(".tuijian") %>% html_text() %>%str_match("[0-9]*") %>% as.numeric()#??str_match的用法??#图书网址
webpage <- web %>% html_nodes(".name a") %>% html_attr("href")#网址就是书名中带有的链接
#提取属性特征即可#生成数据框
data <- data.frame(rank, title, writer, price,publication_company, date,discount,tuijian, webpage)
write.csv(data,file="E:/gdangshuju.csv")#将爬取的数据存入E盘中的dangdangshuju文件中,R会自动生成这个文件,不需要自己重新创建
R语言中rvest包爬虫代码+示例讲解(爬取当当网)相关推荐
- Python爬虫实战+Scrapy框架 爬取当当网图书信息
1.环境准备 1.在python虚拟环境终端使用 pip install scrapy下载scrapy依赖库 2.使用scrapy startproject book创建scrapy心目工程 3.使用 ...
- 在当当买了python怎么下载源代码-爬虫实战一:爬取当当网所有 Python 书籍
图片来自 unsplash 我们已经学习 urllib.re.BeautifulSoup 这三个库的用法.但只是停留在理论层面上,还需实践来检验学习成果.因此,本文主要讲解如何利用我们刚才的几个库去实 ...
- python爬虫爬当当网_爬虫实战一:爬取当当网所有 Python 书籍
本文转载自微信公众号[ 极客猴 ],作者知乎主页 此前错误标注来源导致侵权,在此表示歉意. 我们已经学习 urllib.re.BeautifulSoup 这三个库的用法.但只是停留在理论层面上,还需实 ...
- 请用Python写一个爬虫程序,爬取当当网图书畅销榜数据
好的,下面是一个简单的 Python 爬虫代码,可以爬取当当网图书畅销榜数据: import requests from bs4 import BeautifulSoupurl = "htt ...
- Python 爬虫第三步 -- 多线程爬虫爬取当当网书籍信息
XPath 的安装以及使用 1 . XPath 的介绍 刚学过正则表达式,用的正顺手,现在就把正则表达式替换掉,使用 XPath,有人表示这太坑爹了,早知道刚上来就学习 XPath 多省事 啊.其实我 ...
- Python爬虫 在线爬取当当网畅销书Top500的图书信息
本实例还有另外的离线爬虫实现,有兴趣可点击离线爬取当当网畅销书Top500的图书信息 爬虫说明 1.使用requests和Lxml库爬取,(用BS4也很简单,这里是为了练习Xpath的语法) 2.爬虫 ...
- 在当当买了python怎么下载源代码-python爬虫爬取当当网
[实例简介]python爬虫爬取当当网 [实例截图] [核心代码] ''' Function: 当当网图书爬虫 Author: Charles 微信公众号: Charles的皮卡丘 ''' impor ...
- 在当当买了python怎么下载源代码-爬虫实战:爬取当当网所有 Python 书籍
来源:公众号-极客猴 出处: 本文主要讲解如何利用urllib.re.BeautifulSoup 这几个库去实战,爬取当当网所有 Python 书籍. 1 确定爬取目标 任何网站皆可爬取,就看你要不要 ...
- python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍
来啦,老弟 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 ... 那么接下来 我们就使用 requests 和 re ...
- python爬虫什么书好_python爬虫入门06 | 爬取当当网 Top 500 本五星好评书籍
来啦,老弟 image 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 - 那么接下来 我们就使用 requests ...
最新文章
- Maven Eclipse Run as 命令
- g-gdb调试core文件
- 基于python的压测工具_Python Locust性能测试简介及框架实践
- 如何在java中去除中文文本的停用词
- 【皇甫】☀说说那些选择器
- Ubuntu14.04安装wine QQ
- Spring Boot 发布 jar 包转为 war 包秘籍。
- python web开发 网络编程 TCP/IP UDP协议
- 用java设计一个二叉树类的结构,在JAVA中实现的二叉树结构
- [ubuntu] tmux 窗口不是全屏
- asp.net mvc中加入log4net记录错误日志
- Mac 开发 Hue
- mysql数据库 安装后 闪_MySQL数据库:第十五章:MySQL安装到最后一步未响应MySQL Server Instance Configuration Wizard...
- ISO 9001是什么?ISO 9001 质量管理体系详细介绍
- 3DS MAX 基础知识 材质编辑器
- 小马马说MapReduce算法案例(1):二度人脉好友推荐
- 英语语法回顾1——简单句
- 信创操作系统--统信UOS桌面版(使用终端:bash、tty、基本shell操作)
- MyEclipse导入项目后报Unknown Faceted Project Problem (Java Version Mismatch)的解决方法
- qt 调用linux键盘输入,嵌入式linux上QT标准键盘输入的实现