模拟工业监控摄像头头 800线的 效果 哪个品牌好

利用R语言爬取视频网站数据 - 推酷
利用R语言爬取视频网站数据
2014年写过一篇利用R语言爬取团购网数据的文章前几天被大家发掘出来了,如果大家对这篇文章感兴趣可以查看原文地址:
今天我们就一起来利用简单的R函数做一些爬虫工作,当做是为一些爬虫爱好者提供一些思路。假如想爬取天善社区现在的在线课程数据,查看你感兴趣课程的相关信息(授课老师、课时数、价格、销量)等等。接下来,让我们一步步完成以上的需求。
先看看天善社区的视频首页地址:
,首页截图如下:
在网页上点击鼠标右键,选择查看网页源代码,查看当前页面的HTML源码:
假如各位看官不懂得爬虫技术,只要懂得运用readLines函数和简单的正则表达式就能完成简单的爬虫工作。
首先我们先利用readLines函数将网页的html信息爬取到R中。
web &-readLines(&/course/explore?page=1&,encoding ='UTF-8')
查看读取后的结果:
可见,已经把HTML的源码爬到R中,接下来,我们一步步提取需要的数据。
先提取课程名称。
& # 提取课程名称所在的行
& class &-web[grep(&class=\&caption\&&,web)+3]
& # 查看结果
R语言之shiny应用免费视频教程&
数据分析报告制作&
SAS可视化数据挖掘与分析&
网站统计分析之Googleanalytic介绍与应用&
R语言之数据探索&
【数据V课堂视频教程回放】10月13日Python实战案例分享:爬取当当网商品数据&
Python数据分析与挖掘实战&
《零基础Hadoop特训营第一期》&
R语言之高级绘图&
从零开始学习Spark免费视频教程&
ELK大型日志系统原理与实践详解&
R语言数据绘图基础&
从 通用的数据挖掘流程 到 推荐系统、 自然语言处理&
Python3零基础快速入门&
独一无二的数据仓库建模指南系列教程升级版 【12大章节、彻底无死角,全面掌握数据仓库建模】&
Storm基础应用案例讲解&
& # 删除多余的空格
& class &- gsub(&&,&&,class)
& # 查看结果
[1]&R语言之shiny应用免费视频教程&
[2]&数据分析报告制作&
[3]&SAS可视化数据挖掘与分析&
[4]&网站统计分析之Googleanalytic介绍与应用&
[5]&R语言之数据探索&
[6]&【数据V课堂视频教程回放】10月13日Python实战案例分享:爬取当当网商品数据&
[7]&Python数据分析与挖掘实战&
[8]&《零基础Hadoop特训营第一期》&
[9]&R语言之高级绘图&
[10] &从零开始学习Spark免费视频教程&
[11] &ELK大型日志系统原理与实践详解&
[12] &R语言数据绘图基础&
[13] &从通用的数据挖掘流程到推荐系统、自然语言处理&
[14] &Python3零基础快速入门&
[15] &独一无二的数据仓库建模指南系列教程升级版【12大章节、彻底无死角,全面掌握数据仓库建模】&
[16]&Storm基础应用案例讲解&
现在提取课程数信息。
& # 提取课时所在的行
& length &-web[grep(&class=\&length\&&,web)]
& # 查看结果
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 4课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 3课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 2课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 2课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 15课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 2课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 25课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 32课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 24课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 9课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 18课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 14课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 4课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 5课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 27课时&/span&&
&divclass=\&meta\&&&span class=\&length\&&&iclass=\&fa fa-clock-o\&&&/i& 3课时&/span&&
& # 利用正则表达式提取课时数
& length &-substr(length,regexpr(&i&&,length)+2,regexpr(&课&,length)-1)
& # 查看课时数
& 15& & 2&
& 25& & 32& &24& & 9&
& 18&& 14& & 4&
& 27& & 3&
学习人数、授课老师、课程售价的信息根据以上方式提取出来,代码如下:
& # 提取学生人数
& people &-web[grep(&class=\&pull-right people\&&,web)]
& people &-substr(people,regexpr(&&&,people)+1,regexpr(&人&,people)-1)
& # 提取授课老师
& teacher &-web[grep(&class=\&teacher\&&,web)]
& for(i in 1:length(teacher)){
teacher[i] &-substr(teacher[i],gregexpr(&&&,teacher[i])[[1]][2]+1,gregexpr(&&&,teacher[i])[[1]][3]-1)
& # 提取课程价格
& price &-web[grep(&class=\&teacher\&&,web)+1]
& price &-substr(price,regexpr(&&&,price)+1,regexpr(&/&,price)-2)
将结果整理成data.frame形式。
&result &- data.frame(课程=class,课时数=length,学生人数=people,授课老师=teacher,课程价格=price)
&DT::datatable(result)
可见,第一页的课程信息全部被爬下来了(备注,第十个课程无授课老师,直接跳过)。
我们发现,天善一共有7页视频,现在利用爬虫全部爬取下来,总结网页地址:
爬取全部网页数据的完整代码如下:
# 方法一 利用readLines函数和正则表达式提取网页数据
# 爬取全部网页
web &- NULL
for(i in 1:7){
url&- paste0(&/course/explore?page=&,i)
web1&- readLines(url,encoding = 'UTF-8')
web&- c(web1,web)
# 提取课程名称所在的行
class &-web[grep(&class=\&caption\&&,web)+3]
# 查看结果
# 删除多余的空格
class &- gsub(&&,&&,class)
# 查看结果
# 提取课时所在的行
length &-web[grep(&class=\&length\&&,web)]
# 查看结果
# 利用正则表达式提取课时数
length &-substr(length,regexpr(&i&&,length)+2,regexpr(&课&,length)-1)
# 查看课时数
# 提取学生人数
people &-web[grep(&class=\&pull-right people\&&,web)]
people &- substr(people,regexpr(&&&,people)+1,regexpr(&人&,people)-1)
# 提取授课老师
teacher &-web[grep(&class=\&teacher\&&,web)]
for(i in 1:length(teacher)){
teacher[i] &-substr(teacher[i],gregexpr(&&&,teacher[i])[[1]][2]+1,gregexpr(&&&,teacher[i])[[1]][3]-1)
# 提取课程价格
price &-web[grep(&class=\&teacher\&&,web)+1]
price &-substr(price,regexpr(&&&,price)+1,regexpr(&/&,price)-2)
# 将结果整理成data.frame形式
result &- data.frame(课程=class,课时数=length,学生人数=people,授课老师=teacher,课程价格=price)
DT::datatable(result)
其实,R做爬虫也有很多功能强大的包,例如quantmod包、XML包、RCrul包、rvest包。善用这些包,可以实现复杂的爬虫工作,并大大简化代码量。最后,我们利用rvest包对以上的爬虫重做一遍,这边直接给出爬虫代码。
#### 利用rvest包爬取网页数据
library(rvest)
library(magrittr)
result &- data.frame(课程=1,课时数=1,学生人数=1,授课老师=1,课程价格=1)
result &- result[-1,]
for(i in 1:7){
url&- paste0(&/course/explore?page=&,i)
web&- read_html(url,encoding = 'UTF-8')
class &- web %&% html_nodes(&div.course-box&) %&%html_nodes(&img&)
# 提取课程名称
class &-substr(class,regexpr(&alt=&,class)+5,regexpr(&&&,class)-3)
length &- web %&% html_nodes(&div.meta&) %&% html_nodes(&span.length&)%&% html_text() # 提取课时数
people &- web %&% html_nodes(&div.meta&)
%&% html_nodes(&span.people&)%&% html_text()
# 提取学习人数
teacher &- web %&% html_nodes(&div.meta&) %&%html_nodes(&span.teacher&) %&% html_text()
# 提取老师
price &- web %&% html_nodes(&div.meta&) %&%html_nodes(&span.price&) %&% html_text()
# 提取价格
result1 &- data.frame(课程=class,课时数=length,学生人数=people,授课老师=teacher,课程价格=price)
result &- data.frame(rbind(result,result1))
# 查看结果
DT::datatable(result)
结果如下:
可见,天善线上一共有107套视频。我们想查看一下谢佳标老师现在在线的视频有哪些,中需要在serach窗口输入老师名字即可。
谢老师一共上线了9套视频,此外还有另外六套视频正在录制。想了解谢佳标老师课程更多的信息,可以点击数据挖掘R语言十三式的链接地址:
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致1591人阅读
            题记–任何一个数据挖掘工程师都应该有对数据的热情
  网络上的数据是免费的,是无限的,是有无穷价值的,关键看你怎么去挖掘。为了财富,为了生活,要挖,在挖之前要先爬。
  爬什么?怎么爬?工具+语言?
  首先解决第一个问题,在网上爬什么?网络上的内容很多,文字、音频、视频、广告、病毒、乱码,各式各样。数据必然是不可或缺的,文字也是重要的自然数据,音频和视频暂时还没有打算处理,自然也不再现在要爬取的内容之中。总的来说,数字+文字就是本文主要从网络上爬取的内容。
  怎么爬取呢,有没有什么好的工具和语言?这是我们本文中最关心的内容。要爬取东东,必须得知道东东在网络上的组织形式,才能方便我们爬取信息。信息从网页而来,对网页的组织得有个清楚地了解,现在网页的组织总的来说就是word 的样子,这样爬取一下子就变得简单了,只需要在其中找到我需要的内容对应的标签即可得到我需要的东东,是不是很easy。
用R和Python实现网页数据抓取
  下面,整几个具体的例子来实验一番。这个时候就需要相应的工具和语言了,这个东西就没有什么限制了,既然你明白了原理,也就无所谓手中的工具了。我选择的是R和Python,因为什么呢,因为别人用这两种已经开发出了不少简便快捷的工具,我呢就刚好借用一番,岂不是省了我自己的力气,又让别人的工作体现了社会价值,于人于己都有利。(乱码问题,请自行解决~)
R实现(R3.1.2) 目标:爬取网页上的表格数据。
R代码如下:
library(bitops);
library(RCurl);
library(XML);
URL = “/bbsj/stock300326/yjbb.html”
if(url.exists(URL)){
TableData &- readHTMLTable(URL)
Link =” /bbsj/stock000547/yjbb.html”
if(url.exists(Link)){
webpage &- getURL(Link);
webpage2 &- readLines(tc &- textConnection(webpage));close(tc);
pagetree &- htmlTreeParse(webpage2, error = function(...){}, useInternalNodes = TRUE);
tablehead &- xpathSApply(pagetree, "//table//th", xmlValue);
result &- xpathSApply(pagetree, "//table//td", xmlValue)
Python实现(Python2.7)##也很简单##
Python代码如下:
import urllib2
import lxml.html as zzz
URL = '/bbsj/stock300326/yjbb.html'
= urllib2.urlopen(URL).read()
##剩下的是用正则匹配去查找所需内容##
#doc = zzz.document_fromstring(PageData)
#Cont = doc.xpath(“//a”)
#具体内容见下一篇博客#
#推荐阅读:/article/13820.html
效率比较:
  R比Python高,C更高,Java没试过。但是上面用R和Python是能直接借用别人的工作,节省时间和体力,毕竟咱们爬取数据是为了数据挖掘用的,不是为爬而爬,能偷懒则偷懒。
  难点问题1:动态网页数据如何爬取?(该网页就是为了防止被人爬取的,但我们就是跟它们杠上了,非爬不可)post访问
为什么用Python实现呢,因为小弟用R没有实现,所以就用的Python来做的。
  解决方法:
  URL里包括参数,一般是用get或者post来发送参数信息的。
其中有6个表,点击每一个时,都会动态刷新一下页面,但地址栏里地址还是同一个。借助Firefox,分析post的url命令,确定向谁发送的参数。然后我们写相应的代码。
Python实现(Python2.7)
import urllib
import urllib2
Link = '.cn/companyInfo/toCompanyInfo.do?stock_id=600000.SS&report_year=2014&report_period_id=440'
values = {'report_period_id':'5000', 'report_year':'2014', 'stock_id':'600000'}
Link1 = '.cn/capital/showmap.do'
Link2 = '.cn/companyInfo/showmap.do'
Link3 = '.cn/companyInfo/showTopTenMap.do'
Data = urllib.urlencode(values)
Req = urllib2.Request(Link1, Data)
Response = urllib2.urlopen(Req)
PageData = response.read()
现在,我们得到了想要获得的网页数据##
  难点问题2:服务器自动检测IP,拒绝爬取(或者IP访问次数受限),怎么办?
强力推荐阅读: 有其他内容在里面。
解决方法:使用代理服务器。A
& - - & B(代理) & - - & C
import urllib2
proxy_support = urllib2.ProxyHandler({'http':'http://XX.XX.XX.XX:XXXX'})
opener =urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
= urllib2.urlopen('http://XXXX').read()
##下面这个例子的代理代码有点错误,但是注释可以帮助理解##
# The proxy address and port:
proxy_info = { 'host' : '',
'port' : 3128
# We create a handler for the proxy
proxy_support = urllib2.ProxyHandler({"http" : "http://%(host)s:%(port)d% proxy_info "})
# We create an opener which uses this handler:
opener = urllib2.build_opener(proxy_support)
# Then we install this opener as the default opener for urllib2:
urllib2.install_opener(opener)
# Now we can send our HTTP request:
htmlpage = urllib2.urlopen("http://sebsauvage.net/").read(200000)
#如果代理需要验证
proxy_info = { 'host' : '',
'port' : 3128,
'user' : 'John Doe',
'pass' : 'mysecret007'
proxy_support = urllib2.ProxyHandler({"http" : "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info})
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
htmlpage = urllib2.urlopen("http://sebsauvage.net/").read(200000)
#以上关于代理的代码片段来自于: /codes/python/226
  怎么爬那么多的内容呢?网上的内容多了去了,我们可以遵循网页之间的链接关系来设计相应的搜索算法,以达到我们要爬取的效果。这个时候会有深度搜索,广度搜索,还有神马pagerank策略,OPIC策略等。
  怎么提取爬取的网页见下一篇博客《R语言:网页抓取之不同提取方法解析》
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:48444次
积分:1067
积分:1067
排名:千里之外
原创:39篇
评论:31条
(3)(1)(2)(1)(3)(1)(16)(11)(1)苹果/安卓/wp
积分 147, 距离下一级还需 113 积分
权限: 自定义头衔
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡下一级可获得
权限: 签名中使用图片
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
哼哼签到天数: 2 天连续签到: 1 天[LV.1]初来乍到
在网上找到一个用R进行网页表格数据抓取问题的博客,但用R操作好像得不到结果,哪位大神有经验的帮忙解答一下?
require(XML)
require(RCurl)
webpage&-getURL(link) #此处我将link换成所需表格所在的网页地址,例如&&
&&webpage &- readLines(tc &- textConnection(webpage)); close(tc)
&&pagetree &- htmlTreeParse(webpage, error=function(...){}, useInternalNodes = TRUE)
tablehead &- xpathSApply(pagetree, &//table//th&, xmlValue)&&#这里是抓表格的标题
result&-xpathSApply(pagetree,&//table//td&,xmlValue)& &#这里是表格内容
怎么能得到表格,在线求支援!!
支持楼主:、
购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
载入中......
本帖最后由 ryoeng 于
14:13 编辑
F12 && Network && XHR
或者直接在该文件链接点击右键后Inspect Element...
热心帮助其他会员
热心帮助其他会员
总评分:&经验 + 40&
论坛币 + 20&
学术水平 + 1&
热心指数 + 1&
信用等级 + 1&
/scibrokes/owner
ryoeng 发表于
F12 && Network && XHR
或者直接在该文件链接点击右键后Inspect Element...
http://cos.name/cn/topic/11 ...大神,我是R菜鸟,能否详细解释一下,我的需求是获取指定网址内的表格数据
本帖最后由 ryoeng 于
14:13 编辑 归@零 发表于
大神,我是R菜鸟,能否详细解释一下,我的需求是获取指定网址内的表格数据采集数据 与 webdriver 是肖南兄和itelin的强项。(咱也是三年前从统计之都学来的)
/scibrokes/owner
ryoeng 发表于
采集数据 与 webdriver 是肖南兄和itelin的强项。(咱也是三年前从统计之都学来的)
http://cos.n ...d1 = url %&% html_session() %&% html_nodes(&li .td-1st&) %&% html_text(encoding=&UTF-8&)
能麻烦您帮我解释下这类语句的作用是什么? html_session() ;html_nodes;html_text是什么意思,还有里面的参数怎么获取?
归@零 发表于
d1 = url %&% html_session() %&% html_nodes(&li .td-1st&) %&% html_text(encoding=&UTF-8&)
能麻烦 ...有例子可参考。。。
,,Text只是文字而已...
ryoeng 发表于
有例子可参考。。。
http://www.jeepshoe.org/.htm
http://www.jeepshoe.org/.htm我也搜索了很多案例看过了,最主要的还是不知道html_nodes(&li .td-1st&)节点&li .td-1st&是什么意思,怎么获取、确定
归@零 发表于
我也搜索了很多案例看过了,最主要的还是不知道html_nodes(&li .td-1st&)节点&li .td-1st&是什么意思,怎 ...我稍微懂点了,li:& &td:&&th: 是html的标签,但是如何获取还是不懂
本帖最后由 ryoeng 于
20:38 编辑 归@零 发表于
我稍微懂点了,li:& &td:&&th: 是html的标签,但是如何获取还是不懂(咱十多年前修读电脑科学时学的,使用notepad编写网页的时代,都忘光了,得温习... 尤其是日后使用shiny编写网站)。
有关html、xhtml、css 元素...
参考文献:
/scibrokes/owner
ryoeng 发表于
(咱十多年前修读电脑科学时学的,使用notepad编写网页的时代,都忘光了,得温习... 尤其是日后使用shiny ...感谢大师耐心细致的指导!
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
论坛法律顾问:王进律师

我要回帖

更多关于 防爆监控摄像头 的文章

 

随机推荐