楼主: wuchm
6700 16

[问答] 【重金悬赏】谁能把京东商城手机各品牌的机型、价格、评价人数抓取出来,列在一张表里 [推广有奖]

  • 6关注
  • 1粉丝

已卖:1417份资源

博士生

53%

还不是VIP/贵宾

-

威望
0
论坛币
2397 个
通用积分
4.5700
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
5181 点
帖子
230
精华
0
在线时间
236 小时
注册时间
2007-4-24
最后登录
2024-9-18

楼主
wuchm 发表于 2014-12-2 22:15:13 |AI写论文
50论坛币
谁能把京东商城手机各品牌的机型、价格、评价人数抓取出来,列在一张表里?比如:
品牌 机型 价格  评价人数
华为 P7    2200    20000

小米 mi     699      100000

最佳答案

daishen 查看完整内容

完整版: 经过请教高手,找到隐藏价格的网页,这样你所需要的价格信息也出来了。 require(stringr) require(rvest) require(rjson) myfun = function(x){ url = str_c("http://list.jd.com/list.html?cat=9987%2C653%2C655&page=",x,"&JL=6_0_0") brand = url %>% html_session() %>% html_nodes(".right-extra .p-name a") %>% html_text() b = brand[-c(1:(length(brand) - 60))] %>% ...
关键词:京东商城 重金悬赏 华为 手机 京东商城

沙发
daishen 发表于 2014-12-2 22:15:14
完整版:
经过请教高手,找到隐藏价格的网页,这样你所需要的价格信息也出来了。
require(stringr)
require(rvest)
require(rjson)

myfun = function(x){
          url = str_c("http://list.jd.com/list.html?cat=9987%2C653%2C655&page=",x,"&JL=6_0_0")
          brand = url %>% html_session() %>% html_nodes(".right-extra .p-name a") %>% html_text()
          b = brand[-c(1:(length(brand) - 60))] %>% strsplit(" ")
          b1 = sapply(1:60,function(i) paste(b[[i]][1],collapse = ''))
          b2 = sapply(1:60,function(i) paste(b[[i]][2],collapse = ''))
          b3 = sapply(1:60,function(i) paste(b[[i]][-c(1:2)],collapse = ''))
          evalue = url %>% html_session() %>% html_nodes(".evaluate a") %>% html_text() %>% str_extract("\\d+")
          price = url %>% html_session() %>% html_nodes(".p-price span") %>% html_attrs() %>% unlist %>% as.vector %>% str_replace('p','J_')
          price1 = apply(as.matrix(price),2,paste,collapse = ',')
         
          u = str_c("http://p.3.cn/prices/mgets?skuIds=",price1)
          dat = u %>% html() %>% html_nodes("p") %>% html_text()
          p = fromJSON(dat)
          price =sapply(1:60,function(i) p[[i]]$p)
         
          data.frame(品牌 = b1,型号 = b2,性能描述 = b3,评价 = evalue,价格 = price)
        }

dat = lapply(1:4,myfun) #总计有44页
total = do.call(rbind,dat)

> tail(total)
              品牌     型号                          性能描述 评价人数    价格
235          IUNI       U2              32GB冰峰银联通3G手机     1723 1199.00
236 诺基亚(NOKIA)    Lumia         830(RM-984)黑色联通3G手机      734 1699.00
237          华为   C8817E                      黑电信4G手机      467  799.00
238           TCL 老人手机        (i310)纯净白移动联通2G手机    10970  199.00
239          联想 黄金斗士 A8(A808t-i)8G阿尔卑斯白移动4G手机      743  698.00
240          IUNI       U3  32GB墨池黑移动联通4G手机双卡双待     1056 2000.00

藤椅
冷月初 发表于 2014-12-3 12:20:44
高难度 目前不会

板凳
wuchm 发表于 2015-1-11 12:18:43
daishen:

看到你抓足球彩票写的程序,抓取京东商城,能否写个?

谢谢!

报纸
qimhe 发表于 2015-1-11 13:48:54
没有提供API的,要分析页面框架才能抓取的,不同的页面不一样。你应该把需求提的更具体一点,比如JD的哪个页面,抓多少行数据。

地板
wuchm 发表于 2015-1-11 21:23:50
qimhe 发表于 2015-1-11 13:48
没有提供API的,要分析页面框架才能抓取的,不同的页面不一样。你应该把需求提的更具体一点,比如JD的哪个页 ...
你好,我是新手,刚入门,请多多包涵。我把网页地址发给您看看,具体哪个地址不重要,只要把手机相关信息提取出来就OK。京东商城手机界面网址

通过抓取这个链接,有41页手机信息,2442个商品。
实现2442个手机 品牌、型号、性能描述、价格、评价人数放在一个数据框显示。

1.jpg (268.47 KB)

1.jpg

7
daishen 发表于 2015-1-12 08:25:46
只有网页编码是UTF-8的基本都没有乱码,像你提供的这个网页就没有问题,但最大的问题的你要的价格被京东隐藏起来了,目前还找不到在哪里?
require(stringr)
require(rvest)


url = "http://list.jd.com/list.html?cat=9987%2C653%2C655&page=1&JL=6_0_0"
brand = url %>% html_session() %>% html_nodes(".right-extra .p-name a") %>% html_text() %>% .[-c(1:5)]
evalue = url %>% html_session() %>% html_nodes(".evaluate a") %>% html_text() %>% str_extract("\\d+") %>% as.vector
price = url %>% html_session() %>% html_nodes(".p-price span") %>% html_attrs() %>% unlist %>% as.vector

dat = data.frame(品牌 = brand,评价 = evalue,价格 = price)
head(dat)
> dat
                                                                   品牌  评价        价格
1                苹果(Apple) iPhone 5s (A1530) 16GB 金色 移动联通4G手机 35208    p1057746
2                    苹果(Apple) iPhone 5s (A1518) 16GB 金色 移动4G手机 28366    p1023433
3                苹果(Apple) iPhone 5s (A1530) 16GB 银色 移动联通4G手机 16363    p1057741
4       苹果(Apple)iPhone 6 Plus (A1524) 16GB 金色 移动联通电信4G手机  3323    p1217524
5                   联想 乐檬 K3(K30-T)16G 典雅黄 移动4G手机 双卡双待 23664    p1286133
6                             苹果(Apple) iPhone 4s 8GB 白色 联通3G手机 99708     p981821
已有 1 人评分经验 论坛币 收起 理由
李会超 + 80 + 40 热心帮助其他会员

总评分: 经验 + 80  论坛币 + 40   查看全部评分

8
wuchm 发表于 2015-1-12 08:44:46
daishen 发表于 2015-1-12 08:25
只有网页编码是UTF-8的基本都没有乱码,像你提供的这个网页就没有问题,但最大的问题的你要的价格被京东隐藏 ...
daishen 您好,
写的基本有点像了,能不能再优化下呢?
1、把2422个型号全部抓取出来,需要翻页;
2、最好按照下面格式展示。
非常感谢!!

品牌                 型号               性能描述、                                                  价格   评价人数
苹果(Apple)    iPhone 5s      (A1530) 16GB 金色 移动联通4G手机       5000    35208

9
daishen 发表于 2015-1-12 09:12:56
wuchm 发表于 2015-1-12 08:44
daishen 您好,
写的基本有点像了,能不能再优化下呢?
1、把2422个型号全部抓取出来,需要翻页;
哪些都不是问题,关键问题在京东把价格隐藏起来了,你只能看见价格编码,实际价格看不见。你仔细看看数据框的最后一列。

10
wuchm 发表于 2015-1-12 18:38:50
daishen 发表于 2015-1-12 09:12
哪些都不是问题,关键问题在京东把价格隐藏起来了,你只能看见价格编码,实际价格看不见。你仔细看看数据 ...
前台价格能看到啊

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 10:58