抓取网页数据(用rvest包宝贝数据的过程启动R,以下是用 )

优采云 发布时间: 2022-02-20 09:20

  抓取网页数据(用rvest包宝贝数据的过程启动R,以下是用

)

  rvest 是一个 R 语言包,用于网络数据抓取。该包的引入是“更容易收获(抓取)网页”。其中,html_nodes()函数查找标签的功能非常有用。rvest的使用以天猫搜索结果页的宝贝数据为例进行说明。

  分析网页,打开天猫,按F12打开浏览器的开发工具。个人用火狐,谁让Chrom不支持linux,唉。但是用chrome还是不错的。其他浏览器也有类似的功能。随便搜一下,比如核弹之类的,我真的有结果了!接下来,在浏览器的开发工具“查看器”中查看网页的源代码。或按 CTRL+SHIFT+C 选择任何婴儿。可以看到宝贝的图片,月销量等数据都收录在

  ...

  在块中。打开div块,哈哈,我们需要的产品图片、链接、月销量、价格、商家名称都在里面。也就是说,猫爸其实是相当开放的,没有太多的限制,不然抓到这些数据就麻烦了。接下来启动R,下面是用rvest包抓取宝贝数据的过程

  install.packages("rvest")

  library(rvest)

  gurl % # 读取gurl的链接,指定编码为gbk

html_nodes("div.product-iWrap") # 筛选出所有包含在...块的内容

<p># 抓取卖家昵称和ID

sellerNick % html_nodes("p.productStatus>span[class]") %>%

html_attr("data-nick")

sellerId % html_nodes("p.productStatus>span[data-atp]") %>%

html_attr("data-atp") %>%

gsub(pattern="^.*,",replacement="")

# 抓取宝贝名称等数据

itemTitle % html_nodes("p.productTitle>a[title]") %>%

html_attr("title")

itemId % html_nodes("p.productStatus>span[class]") %>%

html_attr("data-item")

price % html_nodes("em[title]") %>%

html_attr("title") %>%

as.numeric

volume % html_nodes("span>em") %>%

html_text

# 最后保存成数据框对象并存盘备用,以及写入csv文件

options(stringsAsFactors = FALSE) # 设置字符串不自动识别为因子

itemData %

gsub(pattern="/fang5",replacement="http://cs.ganji.com/fang5")

# 缩略图链接

smallImg % html_nodes("dl>dt>div>a>img") %>% html_attr("src")

# 标题

iTitle % html_nodes("dl>dd>a") %>% html_attr("title")

# 户型

iLayout % html_nodes("dl>dd[data-huxing]") %>% html_attr("data-huxing")

# 面积

iArea % html_nodes("dl>dd[data-huxing]") %>%

html_attr("data-area") %>%

gsub(pattern="[^0-9]",replacement="")

# 筛选朝向等数据

iTmp % html_nodes("dl>dd[data-huxing]>span") %>% html_text

iOrientation % html_text %>%

gsub(pattern="\n",replacement=" ") %>%

gsub(pattern=" ",replacement="")

# 提取价格

iPrice % html_nodes("dl>dd>div.price>span:first-child") %>% html_text

# 提取单价

iTime % html_nodes("dl>dd>div.time") %>% html_text %>%

gsub(pattern="[^0-9]",replacement="") %>% as.numeric

# 合并数据框

iData

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线