手机信息采集 ——基于ebay网站Apple手机案例分析

本文详细介绍了如何使用R语言的Rcurl、XML和stringr组件,从ebay网站上采集Apple手机的价格、评分和产品识别码等信息。通过构建SQLite数据库,存储并组织提取的数据,为后续分析提供便利。整个过程包括页面搜索、信息提取、数据存储等多个步骤,展示了网络爬虫的基本流程和数据库管理技巧。
摘要由CSDN通过智能技术生成

手机信息采集 ——基于ebay网站Apple手机

在本案例分析中,我们要采集的是ebay网站上销售们的众多手机的价格、消费者评分和产品识别码等数据。ebay销售的产品很广,让我们能对每家大型手机生产商的产品进行全面的总结。
本案例分析利用了Rcurl、XML和stringr组件,它利用了Rcurl curl句柄。并具备搜索页操控、链接提取和页面下载等特性。运用以上组件,可以在源代码中搜索信息并把Xpath运用到实际问题中。此外,在本案例分析中,创建了一个SQLite数据库,它能以一致的方式保存数据,并可以用于下一个案例分析。
本文旨在构建一个SQLite数据库,用它存放我们迄今提取的数据,并留出加入更多信息的空间。以ebay网站上250个Apple手机信息为例,进行信息的提取、页面的解析和数据的存储。

内容如下所示:
1. 页面搜索
1.1查找指定品牌手机
1.2提取搜索结果页面信息
2. 采集、解析所有产品页面
2.1采集所有产品页面
2.2提取所有产品信息
2.3创建数据框保存
3. 存储数据
3.1用于存储的表的定义
3.2考虑未来的存储的数据表的定义
3.3检查表的函数
3.4保存数据的函数**

1.页面搜索
1.1查找指定品牌的手机
先加载必要组件。Stringr组件可以提取和处理文本片段,XML和RCurl负责主要的抓取工作。
运行程序:
install.packages(“stringr”)
install.packages(“XML”)
install.packages(“RCurl”)
library(stringr)
library(XML)
library(RCurl)
将生产商的搜索网页用getURL函数进行解析,并且建立一个空的SearchPages用于保存解析完的网页。

运行程序:
url<-“https://www.ebay.com/sch/i.html?_from=R40
&_trksid=m570.l1313&_nkw=Apple”
firstSearchPage <- getURL(url)
SearchPages <- list()
SearchPages[[1]] <- firstSearchPage

关于生产商的搜索网页有多页,我们需要下载后面的搜索页面,并把它保存在一个列表对象里。我们创建一个for循环用来获取前五个搜索结果页面。每次都会提取一个下一页的链接,并把网页下载和保存到列表对象中。其中,最重要的是我们需要构建一个xpath表达式,在网页的“审查元素”中我们可以发现下一页是由“class”和“rel”共同决定的,在所有span中找到符合“class”和“rel”,并提取“href”(即网址)。

运行程序:
xpath <- “//a[@class=’x-pagination__control’ and @rel=’next’]/@href”
nextPageLink <- xpathApply( htmlParse(SearchPages[[1]]), xpath)
nextPageLink

运行结果:
href
https://www.ebay.com/sch/i.html?_from=R40&_nkw=Apple&_pgn=2
attr(,”class”)

提取下一页的链接:
运行程序:
for( i in 2:5 ){
nextPageLink <- xpathApply( htmlParse(SearchPages[[i-1]]), xpath)
SearchPages[[ i ]] <- getURL(nextPageLink)
}

nextPageLink <- xpathApply( htmlParse(SearchPages[[2]]), xpath)
nextPageLink

运行结果:
[[1]]
href
https://www.ebay.com/sch/i.html?_from=R40&_nkw=Apple&_pgn=3
attr(,”class”)
[1] “XMLAttributeValue”
attr(,”class”)
[1] “XMLNodeSet”

nextPageLink <- xpathApply( htmlParse(SearchPages[[3]]), xpath)
nextPageLink
[[1]]
href
https://www.ebay.com/sch/i.html?_from=R40&_nkw=Apple&_pgn=4
attr(,”class”)
[1] “XMLAttributeValue”
attr(,”class”)
[1] “XMLNodeSet”
nextPageLink <- xpathApply( htmlParse(SearchPages[[4]]), xpath)
nextPageLink
[[1]]
href
https://www.ebay.com/sch/i.html?_from=R40&_nkw=Apple&_pgn=5
attr(,”class”)同样在提取产品信息时,也需要从“审查元素”中找到合适的“xpath”表达式来采集必要的数据。
1.2提取产品信息
我们要提取的第一个信息就是搜索结果页面的产品标题。利用“审查元素”工具,我们可以发现标题是 < h3 >节点的一部分,运用审查元素里的信息来构建一个关于产品标题的xpath表达式://h3[@class=’s-item__title’]。由于已经获取了要从中提取数据的搜索结果页面,所以我们将其整合成一个函数,并且用lapply函数来从所有页面提取信息。
(1) 提取标题
运行程序:
xpathApply( htmlParse(SearchPages[[1]]), “//h3[@class=’s-item__title’]”, xmlValue)[1:2]

运行结果:
“Apple iPhone 7 - 32GB 128GB 256GB - UNLOCKED - All Colours - 1 Year Warranty”
“Apple iPhone 8 64gb Space Gray 24 months guarantee Italy”

运行程序:
extractTitle <- function(x){
unlist(xpathApply( htmlParse(x), “//h3[@class=’s-item__title’]”, xmlValue))
}
titles <- unlist(lapply(SearchPages, extractTitle))
titles[1:5]

运行结果:
[1] “Apple iPhone 7 - 32GB 128GB 256GB - UNLOCKED - All Colours - 1 Year Warranty”
[2] “Apple iPhone 8 64gb Space Gray 24 months guarantee Italy”
[3] “Apple iPhone 6S - 16GB 32GB 64GB 128GB -Gold/Silver/Grey/Rose- UNLOCKED/SIMFREE”
[4] “Apple iPhone 7 128gb Jet Black + Accessories + Shipping + Warranty 12 months”
[5] “Apple iPhone 8 64gb Red guarantee Italy 24 months”
我们要提取的信息第二个就是搜索结果页面的产品链接。利用“审查元素”工具,我们可以发现标题是节点的一部分,运用审查元素里的信息来构建一个关于产品标题的xpath表达式://a[@class=’s-item__link’]/@href。由于已经获取了要从中提取数据的搜索结果页面,所以我们将其整合成一个函数,并且用lapply函数来从所有页面提取信息。
(2) 提取链接
运行程序:
xpathApply( htmlParse(SearchPages[[1]]), “//a[@class=’s-item__link’]/@href”)[1:2]

运行结果:
[[1]] href
https://www.ebay.com/itm/Apple-iPhone-7-32GB-128GB-256GB-UNLOCKED-All-Colours-1-Year-Warranty/382440661440?epid=225303708&hash=item590b3d61c0:m:mKQepuKr_vqOKemMvtyq7AA
[[2]] href
https://www.ebay.com/itm/APPLE-IPHONE-8-64GB-SPACE-GRAY-GARANZIA-ITALIA-24-MESI/142633355428?epid=5013131415&hash=item21359c48a4:g:nrYAAOSwor1aeD2h
attr(,”class”)
[1] “XMLAttributeValue”

运行程序:
extractLink <- function(x){
unlist(xpathApply( htmlParse(x), “//a[@class=’s-item__link’]/@href”))
}
names

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值