京东爬虫升级版——爬取手机分录下所有品牌的全部商品信息、评论信息及评论图片

一. 获取手机类别下所有品牌的ID

 这里直接贴链接,此链接下的JSON文件中有所有品牌及其ID,至于此链接是如何获得的,想知道的朋友可以自己钻研下,或者留言问我。

https://list.jd.com/list.html?cat=9987,653,655&sort=sort_rank_asc&trans=1&md=1&my=list_brand

而为什么要先得到ID呢?因为经分析,京东某品牌商品的链接结构如下:

https://list.jd.com/list.html?cat=9987,653,655&ev=exbrand_' + ID + '&delivery=1&stock=1&sort=sort_commentcount_desc&trans=1&JL=4_7_0#J_main

所以,嗯,我们进入下面的讲解

 

二. 获取所有品牌的链接

data1 = json.loads(requests.get(url,headers=get_user_hearder()).text)
url2_list=[]
    #获取前10种品牌
for i in range(0,10):
        url2 = 'https://list.jd.com/list.html?cat=9987,653,655&ev=exbrand_' + str(data1['brands'][i][
           'id']) + '&delivery=1&stock=1&sort=sort_commentcount_desc&trans=1&JL=4_7_0#J_main'
        url2_list.append(url2)

我是先将所有品牌的链接先得到,存在一个列表里,当然你也可以得到一个品牌链接就爬取他下面所有的商品,爬完之后再去到下一个链接。

此时得到的链接打开后是这样的:

 

三. 得到该品牌下所有商品的链接

soup = BeautifulSoup(requests.get(url2_list[z]).text, "lxml")
lis = soup.find_all("li", attrs={"class": "gl-item"})  # 抓该分类下的所有产品
items = []
for li in lis:
     items.append("http:" + str(li.find("a").get('href')))

同样存储在一个列表里

 

四. 获取商品的logo、名称、id、评论内容、评论点赞数、评论时间、回复数、追评内容、追评时间并保存在EXCEL中

解析网页,获得商品信息

 pagecode=gethtml(items[i])
 item_name = re.findall(r'商品名称(.*?)</li>', pagecode)[0][1:]
 product_id = re.sub("\D", "", items[i])
 logo = re.findall(r'title=\'(.*?)\'>品牌', pagecode)[0]
 f = xlwt.Workbook()
 sheet1 = f.add_sheet('%s' % ( str(product_id)), cell_overwrite_ok=True)
 row0 = ["品牌", "商品名称", "商品编号", "星级评分", "评论文本", "点赞数", "评论数", '追评文本']
 # 写入第一行
 for k in range(0, len(row0)):
     sheet1.write(0, k, row0[k])

解析json文件,获取评论信息

for j in range(0, 100):
     url = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv119&productId=' + str(
                            product_id) + '&score=0&sortType=5&page=' + str(j) + '&pageSize=10&isShadowSku=0&fold=1'
     print('开始爬取第' + str(j + 1) + '页')
     html = requests.get(url)
     data = getdata(url)
     download(logo, item_name , product_id,data, j)

最后得到的结果如下:

 

五.代码中使用的方法定义说明

本只爬虫只是之前的升级版,许多方法在我之前博文中有,只是之前用的是mysql数据库存储的,这次我用的是excel,所以唯一需要补充的也就在这了

def write_to_excel(logo,item_name,product_id,score,content,time,usefulVoteCount,replyCount,appendcontent,appendtime,i):
    
    sheet1.write(i + 1, 0, logo)
    sheet1.write(i + 1, 1, item_name)
    sheet1.write(i + 1, 2, product_id)
    sheet1.write(i + 1, 3, score)
    sheet1.write(i + 1, 4, content)
    sheet1.write(i + 1, 5, time)
    sheet1.write(i + 1, 6, usefulVoteCount)
    sheet1.write(i + 1, 7, replyCount)
    sheet1.write(i + 1, 8, appendcontent)
    sheet1.write(i + 1, 9, appendtime)
    f.save('%s.xls' %str(item_name))

 

好了,思路及大体代码都在这里,欢迎大家讨论及指点。。。

 

注:本文原创,转载请注明出处!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值