library("XML")

#获取全部的链接
url <- 'http://www.csdn.net/tag/'
i_url_parse<-htmlParse(url,encoding="UTF-8")
xpath_1 <- "//div[@class='overflow']/a"
node<-getNodeSet(i_url_parse,xpath_1)for(j in 1:length(node)){    value2<-xmlGetAttr(node[[j]],name='href')print(value2)
}handler <- function(url){xpath_1 <- "//div[@class='line_list']/*"i_url_parse<-htmlParse(url,encoding="UTF-8");node<-getNodeSet(i_url_parse,xpath_1)#get all divfor(j in 1:length(node)){ value <- xmlGetAttr(node[[j]],name='class');if(value == 'tit_list'){tital <- xmlValue(node[[j]])}else if (value == 'dwon_words'){xpath_2 <- "//div[@class='dwon_words']/span[@class='tag_source']/a"node1 <-getNodeSet(i_url_parse,xpath_2)for(k in 1: length(node1)){value <- xmlGetAttr(node1[[k]],name='href');text <- xmlValue(node1[[k]]);}}}xpath_3<-"//div[@class='page_nav']/a[@class='pageliststy']"node3 <-getNodeSet(i_url_parse,xpath_3)for(m in 1: length(node3)){value1 <- xmlValue(node3[[m]])if(value1 == '下一页'){next_url = xmlGetAttr(node3[[m]],name='href');next_url <- paste('http://www.csdn.net',next_url,sep="")print(next_url)Sys.sleep(25)handler(next_url)}}}#处理news
url <- 'http://www.csdn.net/tag/android/news'xpath_3<-"//div[@class='page_nav']/a[@class='pageliststy']"node3 <-getNodeSet(i_url_parse,xpath_3)for(m in 1: length(node3)){value1 <- xmlValue(node3[[m]])if(value1 == '下一页'){next_url = xmlGetAttr(node3[[m]],name='href');print(next_url)handler(next_url)}}

#获取全部的链接
url <- 'http://www.csdn.net/tag/'
i_url_parse<-htmlParse(url,encoding="UTF-8")
xpath_1 <- "//div[@class='overflow']/a"
node<-getNodeSet(i_url_parse,xpath_1)for(j in 1:length(node)){    value2<-xmlGetAttr(node[[j]],name='href')print(value2)
}结果:

R中处理函数:

handler <- function(url){xpath_1 <- "//div[@class='line_list']/*"i_url_parse<-htmlParse(url,encoding="UTF-8");node<-getNodeSet(i_url_parse,xpath_1)#get all divfor(j in 1:length(node)){ value <- xmlGetAttr(node[[j]],name='class');if(value == 'tit_list'){tital <- xmlValue(node[[j]])}else if (value == 'dwon_words'){xpath_2 <- "//div[@class='dwon_words']/span[@class='tag_source']/a"node1 <-getNodeSet(i_url_parse,xpath_2)for(k in 1: length(node1)){value <- xmlGetAttr(node1[[k]],name='href');text <- xmlValue(node1[[k]]);}}}递归调用handler函数:
  xpath_3<-"//div[@class='page_nav']/a[@class='pageliststy']"node3 <-getNodeSet(i_url_parse,xpath_3)for(m in 1: length(node3)){value1 <- xmlValue(node3[[m]])if(value1 == '下一页'){next_url = xmlGetAttr(node3[[m]],name='href');next_url <- paste('http://www.csdn.net',next_url,sep="")print(next_url)Sys.sleep(25)handler(next_url)}}

单独处理新闻的函数:
#处理news
url <- 'http://www.csdn.net/tag/android/news' xpath_3<-"//div[@class='page_nav']/a[@class='pageliststy']"node3 <-getNodeSet(i_url_parse,xpath_3)for(m in 1: length(node3)){value1 <- xmlValue(node3[[m]])if(value1 == '下一页'){next_url = xmlGetAttr(node3[[m]],name='href');print(next_url)handler(next_url)}}
代码段2:
rm(list=ls())
gc()
library(bitops)
library(RCurl)
library(curl)
library(XML)
alphabet <- c("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","#")
tags <- data.frame('字母分类具体标签'=NA)
temp <- data.frame('循环多个标签临时'=NA)
result <- data.frame('文章标题'=NA,'文章来源'=NA,'文章标签'=NA,'文章发布者'=NA,'字母分类'=NA,'字母分类具体标签'=NA)
x <- getURLContent("http://www.csdn.net/tag/",encoding="UTF-8")
url_tag <- htmlParse(x, encoding="UTF-8")
num <- 0
for (i in 1:27){xpath_tag <- paste("/html/body/div/div/ul/li[",i,"]/div/div/a",sep="")node_tag <- getNodeSet(url_tag, xpath_tag)m <- length(node_tag)print(paste(alphabet[i],"字母分类有",m,"个具体标签!",sep="   "))if(m==0){print(paste("没有找到",alphabet[i],"字母分类的具体标签相关节点!~~~",sep="   "))}else{for (j in 1:m){tags[j,] <- xmlValue(node_tag[[j]])k <- 0for(k in 1:10000){url <- paste("http://www.csdn.net/tag/",tags[j,1],"/news-",k,sep="")y <- getURLContent(url,encoding="UTF-8")url_news <- htmlParse(y, encoding="UTF-8")node_not_exists <- getNodeSet(url_news,"//div[@class='not_search']")if(length(node_not_exists)!=0){break}else{node_news <- getNodeSet(url_news, "//div[@class='line_list']")n <- length(node_news)if(n==0){print(paste("我,",alphabet[i],"字母分类具体标签",tags[j,1],"的资讯不存在!~~~",sep="   "))}else{print(paste(alphabet[i],"字母分类的具体标签",tags[j,1],"第",k,"页有",n,"条资讯!",sep="   "))for(p in 1:10){num <- num+1node_title <- getNodeSet(url_news,paste('/html/body/div/div/div[3]/div[2]/ul/li[',p,']/div/a',sep=""))node_source <- getNodeSet(url_news,paste('/html/body/div/div/div[3]/div[2]/ul/li[',p,']/div/div/span[1]/a',sep=""))node_tags <- getNodeSet(url_news,paste('/html/body/div/div/div[3]/div[2]/ul/li[',p,']/div/div/span[2]/a',sep=""))node_author <- getNodeSet(url_news,paste('/html/body/div/div/div[3]/div[2]/ul/li[',p,']/div/div/span[3]/a',sep=""))result[num,1] <- xmlValue(node_title[[1]])result[num,2] <- xmlValue(node_source[[1]])for(q in 1:length(node_tags)){temp[q,1] <- xmlValue(node_tags[[q]])}result[num,3] <- paste(temp[1],sep=",")result[num,4] <- xmlValue(node_author[[1]])result[num,5] <- alphabet[i]result[num,6] <- tags[j,1]}if(num <= 10){write.table(result[1:num,1:6],file=paste(alphabet[i],".r",sep=""),append=TRUE,col.names=TRUE)}else{write.table(result[(num-n+1):num,1:6],file=paste(alphabet[i],".r",sep=""),append=TRUE,col.names=FALSE)}Sys.sleep(2) #The time interval to suspend execution for, in seconds.rm(result)Sys.sleep(1) #The time interval to suspend execution for, in seconds.gc()result <- data.frame('文章标题'=NA,'文章来源'=NA,'文章标签'=NA,'文章发布者'=NA,'字母分类'=NA,'字母分类具体标签'=NA)print(paste(alphabet[i],"字母分类的具体标签",tags[j,1],"第",k,"页的",n,"条资讯已抓取完毕!",sep="   "))print(paste("字母分类i数字:",i,"字母分类的具体标签j数字:",j,"资讯页码k数字:",k,"资讯条目n数字:",n,"已抓取条数num数字:",num,sep=""))}}}}}
}

在GUI中跑的结果:

有问题,扔需要改进(二)R的多线程1.安装R多线程的包

2.载入程序包

3.指定cpu核数

4.调用log函数并赋值给result

5.停止集群

注:

(三)R语言代理设置curl<-­‐getCurlHandle(proxy="10.10.10.10:8080");getURL("hBp://baidu.com",curl=curl)

转载于:https://www.cnblogs.com/jackchen-Net/p/5141469.html

R-大数据分析挖掘(4-R爬虫实现)相关推荐

  1. 大数据分析Python和R语言的优缺点

    从主观的角度来看,已有数十篇文章比较了Python与R.大数据分析Python和R语言的优缺点旨在更客观地研究语言.我们将在Python和R中并排分析数据集,并显示两种语言需要哪些代码才能获得相同的结 ...

  2. 初探百度大数据分析挖掘平台Jarvis

    在人工功能时代,企业既想通过大数据分析.挖掘技术提升效率,又被大数据量分析.机器学习挖掘等相关技术门槛阻扰,需要一款数据分析挖掘产品跨越这个鸿沟.Jarvis在这个背景下应运而生.Jarvis是支撑大 ...

  3. python 大数据开发框架有哪些_大数据分析Python有哪些爬虫框架?

    一.Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中..用这个框架可以轻松爬下来如亚马逊商品信息之类的数 ...

  4. (实际开发大数据分析系统)网络爬虫获取数据与销售数据分析系统

    大数据分析应用系统的完整开发过程分为数据采集.数据存储.数据计算和数据分析和展示四个部分. 数据采集:WebCollector框架 数据存储:SQL 数据计算: 数据分析和展示:Java EE 流程就 ...

  5. 天律的云端大数据分析挖掘之旅

    原文链接:http://click.aliyun.com/m/13921/ 随着数据爆炸式的增长,我们正被各种数据包围着,最为平常的使用网络.手机.各种电子设备,每天都在产生各种新的数据.大部分的企业 ...

  6. 在大数据分析/挖掘领域,哪些编程语言应用最多?

    Tim Roy  ,原来我也在这里 9 人赞同 更新一下答案-- 之前我提到用R,后来我自己也觉得有点撑不住,应该是技术不行吧.还是建议往Python方向发展. Python不局限于数据分析,还有许多 ...

  7. python语言在大数据分析处理领域应用广泛_在大数据分析/挖掘领域,哪些编程语言应用最多...

    展开全部 在大数据分复析/挖掘领域,编程语制言目前应用最多的bai应该是Python.Python并不简单,除了数du据分析zhi及挖掘,Python还被dao广泛运用到数据爬取.产品开发等领域. 那 ...

  8. python大数据处理与分析课程目标_《大数据分析与挖掘》课程教学大纲

    1 <大数据分析与挖掘>课程教学大纲 一.课程基本信息 课程代码: 16054103 课程名称:大数据分析与挖掘 英文名称: Big data analysis and mining 课程 ...

  9. 大数据分析-考试复习

    Exam-整理 1. 选择题 设计分布式数据仓库Hive的数据表时,为取样更高效,一般可以对表中的连续字段进行分桶操作. 客户端首次查询HBase数据库时,首先需要从-ROOT-表开始查找. HBas ...

  10. 强烈推荐!入门大数据分析必看的知识点总结,适合零基础学习

    大数据包含太多东西了,从数据仓库.hadoop.hdfs.hive到spark.kafka等,每个要详细的说都会要很久的,所以我不认为这里面有一个答案是合理的. 还是得根据自己的职业规划来,毕竟成为大 ...

最新文章

  1. R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包将表格嵌套在可视化图像中
  2. c linux time微秒_学习linux,看这篇1.5w多字的linux命令详解(6小时讲明白Linux)
  3. python3.5安装-Linux:Python3.5安装和配置
  4. C# 2.0 除了泛型
  5. PostProcessor
  6. 笔记:Microservices for Java Developers
  7. Python Itertools.chain()用法【将一组迭代对象串联起来,形成一个更大的迭代器】
  8. Flutter中为图片设置波纹点击效果
  9. hfs文件服务器如何上传文件,hfs文件服务器linux
  10. Mongodb使用总结
  11. .NET面试基础知识
  12. 大型仓库进销存管理系统php源代码,多仓版进销存管理系统PHP源码ERP仓库管理系统php网络版进销存源码...
  13. html中什么字体的英文好看,英语字体有哪些?英语哪种字体最好看
  14. 倍福--控制步进电机
  15. O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸老师)
  16. C++核心准则边译边学-不必惊慌!
  17. First Order Methods in Optimization Ch5. Smoothness and Strong Convexity
  18. sx1278lora模块的常见问题解答
  19. Linux下如何彻底删除用户
  20. 大数据课程培训大纲详解,大数据培训学习内容

热门文章

  1. 当你的服务器被黑了,一定要看是不是犯了这 5 点错误
  2. python代码300行程序_Python小游戏之300行代码实现俄罗斯方块
  3. 刷面经笔记2019.01.30
  4. #1062 – Duplicate entry ‘1’ for key ‘PRIMARY’
  5. VMWare安装苹果Mac OS X
  6. Object-c 协议@protocol(@required、@optional)
  7. PHP面相对象中的重载与重写
  8. 试用cmd markdown
  9. 转载:兼容IE的内阴影和外阴影效果
  10. TFS环境搭建--MSSQL2008安装