首发于 R语言中文社区
网络数据爬虫总结【R】

网络数据爬虫总结【R】

爬虫基础:Rcurl与XML包

Rcurl包访问页面

第一步:模拟浏览器行为

第二步:模拟访问

XML包树结构筛选提取信息

第三步:整理HTML结构

第四步:定位节点

ul/li/div/a/text()

此外,我们也可以用利用两个具有相同的class属性值直接从开始定位,也即

div[@class='first']/a/text() 这两个写法在XML包中都是适用的。

其他细节点

对于多页面的解析

解析页数

构造一个提取函数提取信息

循环读取每一页面信息

字符编码的改变

删除冗余信息,字符串清理

最后给出了XML里常用的节点定位方法与代码

# XML实例
library(XML)
url = "http://www.w3school.com.cn/example/xmle/books.xml"
doc = xmlTreeParse(url, useInternal = TRUE)
top = xmlRoot(doc)
# 选取所有 title 节点
nodes = getNodeSet(top, "/bookstore/book/title")
# 选取第一个 book 的 title
nodes1 = getNodeSet(top, "/bookstore/book[1]/title")
# 选取 price 节点中的所有文本
price = getNodeSet(doc, "/bookstore/book/price/text()")
# 选取价格高于 35 的 price 节点
price1 = getNodeSet(doc, "/bookstore/book[price>35]/price")
getNodeSet(doc, "/bookstore/book[1]")
# 选取属于 bookstore 子元素的最后一个 book 元素。
getNodeSet(doc, "/bookstore/book[last()]")
# 选取最前面的两个属于 bookstore 元素的子元素的 book 元素
getNodeSet(doc, "/bookstore/book[position()<3]")
# 选取所有拥有名为 lang 的属性的 title 元素。
getNodeSet(doc, "//title[@lang]")
# 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性
getNodeSet(doc, "//title[@lang='eng']")
# 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。getNodeSet(doc, "/bookstore/book[price>35.00]")
# 选取 bookstore 元素中的 book 元素的所有 title 元素,且 price# 元素的值须大于 35.00。
getNodeSet(doc, "/bookstore/book[price>35.00]/title")
# 选取 book 元素的所有 title 和 price 元素
getNodeSet(doc, "//book/title | //book/price")
# 选取文档中的所有 title 和 price 元素
getNodeSet(doc, "//title | //price")
# 选取 bookstore 元素的所有子元素
getNodeSet(doc, "/bookstore/*")
# 选取所有带有属性的 title 元素
getNodeSet(doc, "//title[@*]")
# 选择所有属性lang的值
unlist(getNodeSet(doc, "//title/@lang"), use.names = FALSE)
# title结点下的所有文本
getNodeSet(doc, "//title/text()")

运用rvest包提取数据

运用SelectorGadget插件快速定位

安装

使用

rvest爬取数据

最后我们用html_text()函数表示获取文本信息,否则返回的是整个<p>

标签。总体上用以下一行代码就可以实现:

比较与XML获取节点的方法(如下行代码),其实二者是异曲同工的,只不过将“/”分隔换为了“%>%”,同时个别写法有些许调整。

最终如果我们打印出这个变量的内容,就会发现和上篇文章中的爬取内容是一致的。

Rvest这个包的说明文档里给出了一些其他例子:

参考资料:

1.知乎:【数据获取】爬虫利器Rvest包 < 【数据获取】爬虫利器Rvest包 - 知乎专栏>

2.利用RCurl包完成自己感兴趣的团购信息【批量】抓取< 利用RCurl包完成自己感兴趣的团购信息【批量】抓取 - jiabiao1602的专栏 - 博客频道 - CSDN.NET>

3. Hadley Wickham,Selectorgadget < cran.rproject.org/web/p>

4. CRAN其他相关资料


------------------------

作者:余文华

专栏: 乐享数据DataScientists的博客专栏

公众号:乐享数据DataScientists

大家也可以加小编微信:tsbeidou (备注:知乎),进R语言中文社区 交流群,可以跟各位老师互相交流

玻璃钢生产厂家德阳玻璃钢外壳哪家好玻璃钢装饰工程厂家蚌埠玻璃钢花箱定制青海玻璃钢设备外壳厂家遂宁玻璃钢花槽哪家好抚顺玻璃钢前台公司安康玻璃钢公仔雕塑价格长春玻璃钢景观雕塑定做武威商场美陈制作南昌玻璃钢坐凳定做武威玻璃钢花池扬州玻璃钢装饰厂家直销宿迁玻璃钢景观雕塑批发上海玻璃钢机械外壳厂通化玻璃钢花盆制作泉州玻璃钢坐凳制作惠州玻璃钢产品定制淮安玻璃钢花池加工阜阳玻璃钢花箱哪家好白山玻璃钢产品制造内江玻璃钢设备外壳定做盘锦玻璃钢前台制作云浮玻璃钢浮雕价格株洲玻璃钢景观雕塑定制海南玻璃钢产品厂龙岩玻璃钢摆件厂沈阳玻璃钢前台生产厂家泰州玻璃钢产品价格宁波玻璃钢天花吊顶制作益阳玻璃钢树池制造香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化