爬虫就是批量自动将网页的内容抓取下来。用任何语言做爬虫必须要了解的就是网页语法,网页语言无非就是HTML,XML,JSON等,因为正是通过这些我们才能在网页中提取数据,过多的就不再描述,大家可以自行参考大量的资料,大多数语法都是树形结构,所以只要理解了,找到需要数据的位置并不是很难。

用R语言制作爬虫无非就是三个主要的包。XML,RCurl,rvest,这三个包都有不同的主要函数,是R语言最牛的网络爬虫包。

了解html

HTML框架简单说就是任何HTML网页文件中都会包含的基本代码内容。如果我们打算写一个页面,就一定要把框架代码写入后才能正式开始添加内容。框架代码如下:

<!DOCTYPE HTML><html> <head> </head> <body> </body> </html>
<!DOCTYPE HTML><html>
<head>
</head>
<body>
</body>
</html>

这七行代码是所有HTML页面所共有的,也就是HTML的框架了。可以发现也是很有规律的,比如<head>是开头,</head>是结尾,成对出现。

rvest 介绍及使用

官网连接如下
https://github.com/tidyverse/rvest

对于rvest的使用,主要掌握read_html、html_nodes、html_attr、html_text几个函数。
read_html函数获取获取网页信息;
html_nodes获取网页节点信息;
html_attr函数获取特定节点的属性值。
html_text():获取指定名称的网页元素、节点文本;

rvest是R语言一个用来做网页数据抓取的包,包的介绍就是“更容易地收割(抓取)网页”。其中html_nodes()函数查找标签的功能非常好用。

相关的函数:
read_html():读取html文档;
html_nodes():获取指定名称的网页元素、节点;
html_text():获取指定名称的网页元素、节点文本;
html_attrs(): 提取所有属性名称及内容;
html_attr(): 提取指定属性名称及内容;
html_tag():提取标签名称;
html_table():解析网页数据表的数据到R的数据框中;
html_session():利用cookie实现模拟登陆;
guess_encoding():返回文档的详细编码;
repair_encoding():用来修复html文档读入后乱码的问题。
html_session()用来在浏览器中模拟会话
jump_to()用来接收一个url用来连接的跳转
follow_link()用来接收一个表达式(例如a标签)进行连接的跳转
back()用来模拟浏览器后退按钮
forward()用来模拟浏览器前进按钮
submit_form()用来提交表单
str_trim() 删除字符串2端的空格,转义字符也能删掉。

例子

以爬取链家房的名称 https://hz.lianjia.com/ershoufang/pg/ 为例。
**目标:**我们想要爬取房名。

步骤
鼠标右键==》审查元素(或者检查),可以看到这些信息所位于的网页标签。

一步一步解析我们要爬取的内容的位置,因为是树结构,直接看。
内容位于title里面。class="title"表示网页元素div的类为title,用“.”表示类.title a(如果遇到< div id=“idName”>就需要用#,即:#idName)

可以理解为class名为title下的a标签,直接定位到房名。

# 完整代码
lianjia <- read_html("https://hz.lianjia.com/ershoufang/pg/",encoding = "UTF-8")
# 获得节点信息 : CSS 或者 xml 方式
# https://www.w3school.com.cn/cssref/css_selectors.asp
# https://www.w3school.com.cn/xpath/xpath_syntax.asp
pinfen <- lianjia %>% html_nodes('.title a')%>%html_text()
pinfen
pinfen <- lianjia %>% html_nodes('.sellListContent .title a')%>%html_text()
pinfen
# 问题:为什么两个 pinfen内容差一个呢?答案如下图。



答案:因为如果上层只定义title的话,可能匹配到另外的类,所以为了增加准确性可以再加一个上层类sellListContent

这次的例子是爬取了1页的房名,如果想爬取30页的呢?我们查看网址信息:

https://hz.lianjia.com/ershoufang/pg2/
https://hz.lianjia.com/ershoufang/pg3/
https://hz.lianjia.com/ershoufang/pg4/
https://hz.lianjia.com/ershoufang/pg30/

https://hz.lianjia.com/ershoufang/pgxxx/

所以,如上,我们只需要写个循环就可以获得所有页的房名信息。

**注意:**我们这里教程是爬取静态网页的信息,如果是动态网页的话,就需要其它包来爬取,敬请期待~

【末尾福利】
这里强烈推荐一个插件:SelectorGadget
https://huajiakeji.com/web-development/2019-08/957.html

相信爬虫的爱好者们都经历过这样一个爬虫前期的准备过程,那就是用浏览器的审查元素进行爬取目标的定位。每次我们都要浪费部分时间去寻找定位点和xpath,这样既不很方便,也不高效,那么如何提高爬虫中这部分工作的效率呢?它就是:SelectorGadget 插件

R语言-爬虫rvest相关推荐

  1. 豆瓣电影R语言爬虫和数据分析.

    主要内容: 1.r语言爬虫 rvest包的使用. 2.r语言字符串处理stringr包的使用. 3.r语言聚合dplyr 包的使用. 4.r语言可视化ggplot 包的使用. 5.r语言画词云图wor ...

  2. R语言爬虫:当当图书畅销榜(近7日)

    时间:2018-10-9 爬取内容:当当图书畅销榜(近7日):书名.作者.出版社.推荐率.出版时间.价格.折扣.网址 R语言爬虫:当当图书畅销榜(近7日) 通过对其他人爬虫代码的学习,发现有相当一部分 ...

  3. 数据挖掘r语言和python知乎_Hellobi Live |R语言爬虫实战案例分享:网易云课堂、知乎live、今日头条、B站视频...

    课程名称 R语言爬虫实战案例分享:网易云课堂.知乎live.今日头条.B站视频 网络数据抓取是数据科学中获取数据中的重要途径,但是一直以来受制于高门槛,都是专业程序员的专属技能.直到R语言和Pytho ...

  4. 手把手教你使用R语言爬虫在气象网站抓取气象数据并分析绘制热力日历图(1)

    我们做临床研究常见的烦恼为没有好的数据,目前气象网站上有很多关于气象因素和空气质量数据,但是没有系统的整理和格式等问题,我们使用起来非常不方便,而且很费时间,我们可以使用R语言爬虫工具对网站上的数据进 ...

  5. R语言爬虫之rvest包——基础详细介绍+示例

    为什么要学习R语言 都说Python爬虫功能强大,其实遇到动态加载或者登陆网站Python还是很困难,对于大部分的一些普通爬虫,R语言还是很方便.这里介绍R语言rvest包爬虫,主要用到函数:read ...

  6. R语言爬虫慕课网课程信息(超级详细!)

    慕课网信息-R语言爬取,使用火狐浏览器 一.慕课网页与爬取信息 二.爬取慕课网页实战课程大类与链接 三.对单个课程类别所有课程爬取 A.直接爬取相应信息 B.问题A的解决 C.翻页爬取 四.对每个课程 ...

  7. HTTP基础知识(仅介绍涉及R语言爬虫部分)

    说明:本文参照Simon Munzert著&吴今朝译的<基于R语言的自动数据收集>一书,进行个人二次整合而成,如有侵权,告知后删. 同步转载至个人公众号:R语言学习 同步转载至个人 ...

  8. R语言:rvest 包

    1. rvest 介绍 网络爬虫是讲呈现在网页上以非结构格式(html)存储的数据转化为结构化数据的技术,该技术非常简单易用. rvest是R用户使用率最多的爬虫包,它简洁的语法可以解决大部分的爬虫问 ...

  9. r语言爬虫数据html表格,如何用R语言爬取网页表格数据节省一天工作时间

    今天R语言给我帮了一个大忙,简单的几行代码几乎节省了我一天的时间,小白表示R语言太有用了! 问题如下: 我想获取网页中表格里的数据,网页表格如下图 但是呢,很坑爹的是,这个表格不能复制粘贴,Ctrl+ ...

最新文章

  1. eclipse提示在***类中找不到main方法
  2. grpc_模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST
  3. 禁止backspace键(退格键),但输入文本框时不禁止(兼容IE)
  4. Java算法--插入排序算法
  5. windows安装RabbitMQ注意事项
  6. sql语句优化之not in
  7. Android高效异步图片加载框架
  8. 从Jensen不等式到Minkowski不等式
  9. Java连接HBase数据库,操作HBase数据库
  10. Axure软件的简单使用
  11. 互联网晚报 | 12月9日 星期四 | 微博正式登陆港交所;OPPO官宣首款自研芯片即将发布;腾讯启动“技术公益创投计划”...
  12. BUUCTF:[0CTF 2016]piapiapia
  13. 软件定义汽车的关键—车载操作系统
  14. mp4类文件的AAC编码完美修复方法
  15. Failed resolution of: Lkotlin/jvm/internal/Intrinsics;
  16. vue 省市区选择插件v-distpicker设置初值与选择后触发方法
  17. 木瓜移动每日资讯0618:Facebook宣布将在全球范围内推出“Instagram Reels”广告服务
  18. Tess4J 简单运用 巨坑太多了
  19. AxMath的常用操作
  20. 这15年专业之外的吐血学习总结。

热门文章

  1. ng bootstrap css,Angular2学习笔记-ng bootstrap中motal组件使用
  2. 计算机相关的日语词汇,与计算机操作相关的日语词汇(2)
  3. python爬虫实时更新数据_Python爬虫 更新中
  4. 财务报表分析关键点总结
  5. Automatic Open-World Reliability Assessment
  6. c#未能加载基类System
  7. 华为设备攻击防范配置命令
  8. Qt中调用OpenCV函数库时Crashed问题的解决。
  9. Sklearn——决策树可视化
  10. (中兴路由器)无中继的DHCP配置实验