楼主: wuchm
6696 16

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

11
daishen 发表于 2015-1-12 19:23:54
wuchm 发表于 2015-1-12 18:38
前台价格能看到啊
京东好像已经意识到这个问题,所以他把价格隐藏起来,就好像你在街上看见美女,但是你不能碰她是一个道理。即只能看不能摸。

12
wuchm 发表于 2015-1-12 22:13:45
daishen 发表于 2015-1-12 19:23
京东好像已经意识到这个问题,所以他把价格隐藏起来,就好像你在街上看见美女,但是你不能碰她是一个道理 ...
你是高手哈
如果不展示价格,能不能写个完整的呢?把2422个型号全部抓取出来分列展示;

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

O(∩_∩)O谢谢

13
daishen 发表于 2015-1-13 07:46:05
全部运行太耗时,我只试了4页,总计有44页,你自己慢慢下载吧。

require(stringr)
require(rvest)

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
          data.frame(品牌 = b1,型号 = b2,性能描述 = b3,评价 = evalue,价格 = price)
        }

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

> head(total)
                 品牌   型号                               性能描述  评价     价格
1         苹果(Apple) iPhone        5s(A1530)16GB金色移动联通4G手机 35369 p1057746
2         苹果(Apple) iPhone            5s(A1518)16GB金色移动4G手机 28445 p1023433
3         苹果(Apple) iPhone        5s(A1530)16GB银色移动联通4G手机 16459 p1057741
4 苹果(Apple)iPhone      6  Plus(A1524)16GB金色移动联通电信4G手机  3475 p1217524
5                联想   乐檬 K3(K30-T)16G典雅黄移动4G手机双卡双待 24135 p1286133
6      【套装版】荣耀      6          (H60-L01)低配版白色移动4G手机 37211 p1160548
已有 1 人评分经验 论坛币 收起 理由
李会超 + 20 + 20 精彩帖子

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

14
—_—_—_—_— 发表于 2015-1-13 10:15:03
果然是大神啊

15
wuchm 发表于 2015-1-13 20:54:12
兄弟,你的钻研精神令人折服!赞一个。
我刚刚运行了,结果只显示几行。麻烦大师再仔细瞧瞧;另外,这里面的链接哪些是不动的,哪些是随时变化的,麻烦把变化的加粗标记下?感谢!
辛苦了!

QQ截图20150113204823.jpg (257.06 KB)

R运行结果

R运行结果

16
daishen 发表于 2015-1-13 21:42:43
运行多页是有些问题,我运行14页没有问题,但加到44也就出现问题了,而我随机的挑选一些页面还是正常的,搞不明白是怎么回事。
> dat = lapply(1:14,myfun) #总计有44页
> total = do.call(rbind,dat)
> tail(total)
                   品牌                     型号                           性能描述 评价人数    价格
835                 NUU                      NU1                     联通3G手机黑色      313  399.00
836 易丰(Ephone)A8-F2 移动/联通/电信3G老人手机               双卡双网双模双待黑色       83  256.00
837  【电信赠费版】三星                   Galaxy S5(G9009W)白电信4G手机双卡双待双通        3 3699.00
838          波导(BiRD)                    T9608           移动3G手机双卡双待宝石蓝      103  399.00
839      凯利通(KLITON)                       T1     钢铁侠皓月白移动3G手机双卡双待       23  799.00
840                云狐                       A8                     黄色联通3G手机        9 6280.00
> dat = lapply(1:44,myfun) #总计有44页
Show Traceback

Rerun with Debug
Error in basename(file) : path too long > total = do.call(rbind,dat)
> tail(total)
                   品牌                     型号                           性能描述 评价人数    价格
835                 NUU                      NU1                     联通3G手机黑色      313  399.00
836 易丰(Ephone)A8-F2 移动/联通/电信3G老人手机               双卡双网双模双待黑色       83  256.00
837  【电信赠费版】三星                   Galaxy S5(G9009W)白电信4G手机双卡双待双通        3 3699.00
838          波导(BiRD)                    T9608           移动3G手机双卡双待宝石蓝      103  399.00
839      凯利通(KLITON)                       T1     钢铁侠皓月白移动3G手机双卡双待       23  799.00
840                云狐                       A8                     黄色联通3G手机        9 6280.00
>

17
wuchm 发表于 2015-1-13 22:05:16
daishen 发表于 2015-1-13 21:42
运行多页是有些问题,我运行14页没有问题,但加到44也就出现问题了,而我随机的挑选一些页面还是正常的,搞 ...
还是有BUG(⊙o⊙)哦,我只看到几行,也没有14页哈。
抓取网页这些信息,原理是什么哈?

你再修改修改看,谢谢!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 19:29