R语言:读取淘宝的单品页的名称和价格

转自:http://www.bassary.com/?p=1105

#lab1
library(XML);
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")#把html文件读入r语言中并解析
 
#找结点
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")#解决中文正常显示问题
 
 
#lab2使用R语言爬取淘宝网站的笔记本商品价格和名称
library(XML);
url1<-"http://3c.taobao.com/detail.htm?spm=872.217037.254698.6.deIiSJ&spuid=205341228&cat=1101"
url2<-"http://3c.taobao.com/detail.htm?spm=872.217037.254698.11.deIiSJ&spuid=203228104&cat=1101"
read_taobao<-function(url){
    name_text<-""
    price_text<-""
    i<-1
    for(i_url in url){
        i_url2<-htmlParse(i_url,encoding="UTF-8")#读取html数据
        name<- getNodeSet(i_url2,"//div[@id='idetail']//div[@class='info-area']//div[@class='tlt clearfix']//h1")#通过xpath找到网页中的name
        #xpath://任意位置的  @是属性
        name_text_tmp<-xmlValue(name[[1]])#提取name的内容
        price<-getNodeSet(i_url2,"//div[@id='idetail']//div[@class='info-area']//div[@class='key-info']//span[@class='price']")#通过xpath找到网页中的price
        price_text_tmp<-xmlValue(price[[1]])#提取price的内容
        name_text[i]<-name_text_tmp
        price_text[i]<-price_text_tmp
        i<-i+1
    }
    data.frame(name=name_text,price=price_text)
}
url<-c(url1,url2)
read_taobao(url)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值