- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
玩转 R 爬虫
首先思考一下,我们经常会在登录网站时,碰到一些验证码,网站会为此解释说:“请帮我们确认你是不是机器人”,这个‘’机器人” 指的是什么?
网络爬虫,又称为网络蜘蛛、网络机器人。它们被广泛的应用在互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。简而言之,爬虫能通过一定的爬取技术,自动获得你在互联网上用肉眼所能看到的信息。比如:百度、谷歌等搜索引擎都是使用了爬虫来获取搜索结果。
2. 使用 R 爬虫包抓取网页数据
3. 清洗数据
1. 分析你所要抓取的网页结构
4. 存储数据
学会爬虫,你需要:
了解 HTML、HTTP 协议
了解网络数据常用存储格式:JSON
学会 rvest、httr 这两个常用爬虫包
学会正则表达式(stringr 包或者 base 包里的 grep 等函数)
学会本地读写操作
进阶爬虫,你需要:
学会抓包
学会调用 API 接口
学会使用捕获错误机制
学会使用反反爬策略
熟练正则表达式操作
能使用多线程加快爬虫速度
什么是 HTML?
使用 rvest 包抓取数据
什么是 HTTP 协议?
使用 httr 包抓取数据
进阶之使用反反爬策略
什么是 HTML?
HTML,即 HyperText Markup Language,一种超文本标记语言,用来创建网页。
巧用浏览器的查看器面板
常见 HTML 节点介绍
Q:我们已经知道如何在面板中定位 HTML 节点,那我们怎么通过 R 来获取该节点包含的数据呢?
A:rvest 包,你值得拥有!回顾前面展示的代码,其实已经包含了 rvest 包中的函数:read_html( )、html_nodes( )等
使用 rvest 包抓取数据
rvest 包中最最最常用函数:
read_html( )、html_nodes( )、html_text( )、html_table( )、html_attr( )
节点定位方法:
使用 css 选择器或 xpath 方法定位到节点,从而提取出节点所包含的数据。
案例一:抓取 CRAN 上所有 R 包的信息
案例二:抓取 stackoverflow 上关于 R 的问题
案例三:抓取豆瓣电影 top250 的超简单未遂版本
rvest 包的优缺点:
优点:简单、易上手
缺点:① 无法直接获取动态加载的数据;② 在反爬较严格的网站面前,显得有些弱鸡,访问经常变得不稳定。
解决办法:使用 httr 包
httr 包的先修知识:了解 HTTP 协议
什么是 HTTP 协议?
HTTP 是什么(WHAT):HTTP,全称是 Hyper Text Transfer Protocol,即超文本传输协议,但是 HTTP 并不仅仅用来传输超文本的标准,它还可以被用来向服务器请求几乎任何类型的资源。
HTTP 协议在网络传输中的工作原理(HOW):
1. 用户在浏览器里输入想要到达的 URL(网址)
2. 浏览器起到 http 客户端(user client)的作用,用来发起请求(request)
3. http 服务器(web server)响应请求(response),返回用户所需要的文件
4. 所有请求文件发送完毕后,服务器会关闭与 http 客户端的连接
HTTP 消息的组成部分
HTTP 消息由三部分组成:
起始行(start line)
标头(headers)
正文(body)
HTTP 消息的组成部分
HTTP 消息的三个组成成分的内容是不一样的,取决于该 HTTP 消息属于请求(request)还是响应(response)
HTTP 请求的结构
Method:GET、POST、DELETE等
Headers:请求头部分,包含UA、cookie等
Body:
GET方法:一般不会把数据存放在请求正文中,把想要的资源直接写在链接里
POST 方法:会把需要的资源用数据暗号的形式存放在正文中,安全性高
HTTP 响应的结构
Status code:2xx 表示请求成功,3xx表示重定向,4xx表示服务器拒绝你的访问,5xx表示服务器出现错误
Headers:响应标头,不重要
Body:
可能返回 HTML 页面源码,也可能返回动态加载的 JSON 格式数据
响应正文的常见数据格式:JSON
使用 httr 包抓取数据
1. 找到请求资源所在的 URL
捕获错误机制(why):
自己造成的错误:构造链接发生错误
服务器端出错:访问了死链(如 404 页面找不到)
网络问题:网络连接突然中断了
捕获错误机制(HOW):
使用 tryCatch( ) 语句:
tryCatch(
{可能出现问题的语句},
error = function(e){处理错误情况},
您可能关注的文档
最近下载
- 国庆节小报手抄报word电子版模板黑白线稿横版竖版涂色8KA3A4 (6).docx VIP
- 2019人教版高中物理必修第三册《第十章 静电场中的能量》大单元整体教学设计[2020课标].docx
- 函数的概念及表示法.ppt VIP
- 沪教版二年级下册数学《万以内数的认识与表达》(课件).pptx VIP
- 数学核心素养下的大单元结构化教学设计.doc VIP
- 社会教育《幼儿园的一天》PPT.pptx VIP
- 基于核心素养导向大单元教学设计培训课件人教版初中数学_百.docx VIP
- 初中数学基于核心素养导向的大单元教学设计(共50张).pptx VIP
- 人教版二年级下册数学精品教学课件 第7单元 7.2.1计数单位“万” (3).ppt VIP
- 四圣心源-六气解-六气从化.pdf VIP
文档评论(0)