前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生信人的R语言视频教程-语法篇-第十一章:R中的网络爬虫

生信人的R语言视频教程-语法篇-第十一章:R中的网络爬虫

作者头像
DoubleHelix
发布2020-06-10 17:24:29
1.5K0
发布2020-06-10 17:24:29
举报
文章被收录于专栏:生物信息云生物信息云

这一章的内容是:R中的网络爬虫

用任何语言做爬虫必须要了解的就是网页语法,网页语言无非就是HTML,XML,JSON等,因为正是通过这些我们才能在网页中提取数据,过多的就不再描述,大家可以自行参考大量的资料,大多数语法都是树形结构,所以只要理解了,找到需要数据的位置并不是很难。用R语言制作爬虫无非就是三个主要的包。XML,RCurl,rvest,这三个包都有不同的主要函数,是R语言最牛的网络爬虫包。

1.HTML

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

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

第一行 <!DOCTYPE HTML>

第二行 <html>

第三行 <head>

第四行 </head>

第五行 <body>

第六行 </body>

第七行 </html>

这七行代码是所有HTML页面所共有的,也就是HTML的框架了。不信我们来验证一下。https://www.w3school.com.cn/

比如:

图片来自网络

2.rvest包介绍

对于rvest的使用,主要掌握read_html、html_nodes、html_attr几个函数。其中read_html函数获取获取网页信息,html_nodes获取网页节点信息,html_attr函数获取特定节点的属性值。

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端的空格,转义字符也能删掉。

我们以http://www.chemfaces.com/ 进行介绍,爬取该网站所有天然产物的药物信息。http://www.chemfaces.com/natural/

2.1 read_html函数

read_html函数用于获取指定链接的网页信息,因此需要制定URL地址以及网页编码格式,默认为UTF-8即可。

代码语言:javascript
复制
stringAsFactors=FALSE
# install.packages("rvest")
# install.packages('RCurl')
url1 <- "http://www.chemfaces.com/natural/"
library(tidyr)
library(rvest)
library(dplyr)
drug_web <- read_html(url1, encoding = "utf-8")

2.2 html_nodes函数

html_nodes函数用于获取网页节点信息。在2.1中,通过read_html函数获取的变量chemfaces含有药物所有信息。若只想抓取网页内特定节点的信息,只需要利用html_nodes函数指定目标节点。先查看网页源代码,找到目标信息的位置及节点。html_nodes用于获取相应节点的数据,先看下html_nodes的参数:

代码语言:javascript
复制
html_nodes(x, css, xpath)

x:网页信息,即read_html获取的网页信息变量;

css:使用css选择参数,用于定位网页节点,语法为标准css选择器的语法,参见http://www.w3school.com.cn/cssref/css_selectors.asp

xpath:使用xpath选择参数,功能与css一致,用于定位网页节点,语法为xpath语法,参见http://www.w3school.com.cn/xpath/xpath_syntax.asp

css参数xpath参数功能一致,两者选择一种即可。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MedBioInfoCloud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档