打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
R语言网络爬虫经验

1

读取

1#假设url为网页
2library(rvest)
3read_html(rul)->website
4#该方法对于html/shtml都好用
5
6#可是网页为.aspx时候这个方法不行,改为
7library(httr)
8GET(url,handle=handle(url)) %>%
9 content(at='parse') ->website


2

进度条设置

在爬虫的时候经常爬到一个时候就自己断了,问题是我们还看不出来是断了还是没有断,

因此需要往里面加入进度条,当进度条卡住的时候,就可以停止自己的程序在断点重新跑


 1 library(tcltk)  
2u <- 1:2000  
3
4#开启进度条  
5
6pb <- tkProgressBar('进度','已完成 %'0100)  
7
8for(i in u) {  
9   info<- sprintf('已完成 %d%%', round(i*100/length(u)))  
10   setTkProgressBar(pb, i*100/length(u), sprintf('进度 (%s)', info),info)  
11}     
12#关闭进度条  
13close(pb) 


3

时间间隔设置

就算有进度条,程序隔一段时间还是会自动退出,有的网站设置了最长访问时间,有的会拒绝请求。为了打破这种机制,在循环中插入人工时滞,虽然时间会长一点,但是从自动化角度上看,其实还是节省了时间。时间的设置需要多试几次,直到最后跑很久都不会断掉为止。


1 System.time()  #中间放进去的时间单位为秒


4

CSS vs Xpath

使用rvest包的时候,html_nodes函数可以使用CSS选择器和Xpath两种方式选择节点。

大部分情况下,CSS选择器方便快捷,实在是利器;但是在解决复杂性问题的时候(比如我需要找到包含符合一定规律的节点的父节点的父节点的最后一个节点的某个元素的时候),只能使用Xpath进行设置寻找。注意CSS和Xpath虽然可以混用,但是Xpath一定要在CSS之前使用,因为Xpath才能够得到一系列的节点及其相互关系,而CSS则直接给你一些节点,无法进一步进行更多的操作。


5

正则表达式

实在找不到什么好的关系的时候,不要忘了用正则表达式。stringr包的str_extract配合str_sub函数可以找到大部分问题。


6

断点继续的办法

用data.frame数据结构不断进行rbind,循环中的i,j,k注意要分开标,因为都是全局变量。一般来讲以i作为标准比较好,也要看解决问题的层次。重复使用上层循环得到的数据是会有重复的,没关系,我们有unique

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
webmagic的设计机制及原理
爬虫学习基础
Python从入门到爬虫案例实现~
requests库的作者又发布了一个新库requests-htmlpython爬虫 requests
如何利用Scrapy爬虫框架抓取网页全部文章信息(中篇)
Python 爬虫实战:驾驭数据洪流,揭秘网页深处
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服