博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R语言心得-网页文本分析
阅读量:7108 次
发布时间:2019-06-28

本文共 2546 字,大约阅读时间需要 8 分钟。

R语言心得是在阅读《R语言与网站分析》并使用的过程中产生的想法。

旨在通过博文寻找一起学习进步的小伙伴。

网页数据爬取和文本分析一直是一个很酷炫的事,可是代码一长,难免有这样那样的问题。

下面几个是几个案例的成功实现,仅供参考

###例1:前戏,爬取下述网站的价格字段(中文读取有问题)####

url<-"http://product.dangdang.com/1310721937.html#ddclick?act=click&pos=1310721937_3_1_m&cat=4008120&key=&qinfo=&pinfo=&minfo=4219_9_58&ninfo=&custid=&permid=20160105154317363605090772959201669&ref=&rcount=&type=&t=1451984626000"
url.html<-htmlParse(url,encoding="utf-8")
url.html
url.xpath<-getNodeSet(url.html,"//*[@class='d_price']/span[@id='promo_price']")
##教材P396好好理解,辅助:F12,Elements,放大镜###
url.xpath
price<-xmlValue(url.xpath[[1]])
price<-as.numeric(substr(price,2,nchar(price)))
price

###例2:网上示范案例###

url1<-"http://data.caixin.com/macro/macro_indicator_more.html?id=F0001&cpage=2&pageSize=30&url=macro_indicator_more.html#top";
url<-htmlParse(url1,encoding="UTF-8")
test <- getNodeSet(url,'//meta[@name]')#xpath语法找到html部件#显示的中文正常
#读取结点的内容:xmlValue内部参数只能是一个字符串
test_text_list<-sapply(test, xmlValue)#提取内容,多个的化以向量形式存储
test_text<-xmlValue(test[[2]])#把test的第2个中的内容提取出来=test_text_list[2].注意,即时test只有一组数据也要使用test[[1]],不可以直接使用test(不是字符串)
#读取结点的属性:xmlGetAttr内部参数只能是一个字符串
content1<-xmlGetAttr(test[[1]], "content")#读取test[[1]]中的content内容。注意直接用test不可以。#显示的中文不正常
content1<-iconv(content1,"UTF-8","gbk")#解决中文正常显示问题

###例3:书本P396-397###

url<-"http://category.dangdang.com/cid4008120-pg1.html"
url.html<-htmlParse(url,encoding="UTF-8")
xpath<-"//*[@name='lb']/div[@class='inner']/a"
url.node<-getNodeSet(url.html,xpath)
xmlGetAttr(url.node[[1]],'href')

####正文部分:已完成####

library(XML);
url<-c()
for(i in 1:9){
url<-c(url,paste("http://category.dangdang.com/cid4008120-pg",i,".html",sep=""))
}
read_url<-function(url){
url_vector<-c()
i<-1
for(i_url in url){
i_url.html<-htmlParse(i_url,encoding="UTF-8")
url.xpath<-getNodeSet(i_url.html,"//*[@name='lb']/div[@class='inner']/a")
url.i<-c()
for(j in 1:length(url.xpath)){
url.i<-c(url.i,xmlGetAttr(url.xpath[[j]],'href'))
}
url_vector<-c(url_vector,url.i)
i<-i+1
}
url_vector
}
urls<-read_url(url)

read_xml<-function(urls){

id_vector<-c()
price_vector<-c()
i<-1
for(i in 1:99){
url.html<-htmlParse(urls[i],encoding="UTF-8")
id.xpath<-getNodeSet(url.html,"//*[@id='stock_span']")
id<-xmlGetAttr(id.xpath[[1]],'prd_id')
price.xpath<-getNodeSet(url.html,"//*[@id='salePriceTag']")
#price.xpath<-getNodeSet(url.html,"//*[@id='promo_price']")
price<-xmlGetAttr(price.xpath[[1]],'ddsp')
price
id
id_vector[i]<-id
price_vector[i]<-price
i<-i+1
}
data.frame(id=id_vector,price=price_vector)
}
zzz<-read_xml(urls)
zzz

转载于:https://www.cnblogs.com/zhoufan/p/5111996.html

你可能感兴趣的文章
Linux分区规划与xshell使用排错
查看>>
Ubuntu安装Osmocom-BB一只猿多频点WEB脚本
查看>>
论文笔记之:Multiple Feature Fusion via Weighted Entropy for Visual Tracking
查看>>
内存映射的原理
查看>>
qemu安装
查看>>
SQL优化常用方法40
查看>>
dataguard中需要注意的一些数据文件操作
查看>>
[20150203]关于位图索引2.txt
查看>>
SAP S/4 HAHA Simple Finance-成本要素合并到总账科目
查看>>
AIX重新认存储步骤
查看>>
Gdevops峰会归来
查看>>
聊聊Oracle 11g中的Reference Partition(上)
查看>>
[20160529]windows下使用bbed.txt
查看>>
后台(15)——JSP(1)
查看>>
开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)
查看>>
ActiveMQ源码架构解析第一节(转)
查看>>
很不错的文章---【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群
查看>>
成员变量
查看>>
可靠性、可用性和容灾设计这些活动都是围绕 “安全” 这个核心,而性能优化,提升响应性则是围绕 “效率”...
查看>>
一个类应该要么声称,“你不能破坏我,我对你来说是个黑盒”,要么“我已经被破坏了;先修复我然后再使用我”(转)...
查看>>