Python网络爬虫笔记:下载分析京东P20销售数据

Posted 习惯形成性格,性格决定命运

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python网络爬虫笔记:下载分析京东P20销售数据相关的知识,希望对你有一定的参考价值。

 (一)  分析网页

下载下面这个链接的销售数据

https://item.jd.com/6733026.html#comment

1、      翻页的时候,谷歌F12的Network页签可以看到下面的请求。(这里的翻页指商品评价中1、2、3页等)

 

从Preview页签可以看出,这个请求是获取评论信息的

2、      对比第一页、第二页、第三页…请求URL的区别

可以发现 page=0、page=1,0和1指的应该是页数。

第一页的 request url:没有这个rid=0& 。 第二、三页…的request url:多了这个rid=0&

除了上面这2个地方,其他内容都是一样的。

3、      直接在浏览器输入 复制出来的request url,可以看到评论、颜色、版本、内存信息,代码将根据这些信息来写正则表达式进行匹配。

(二)  实现代码

delayed.py的代码和我前面发的是一样的(Python网络爬虫笔记(二)),不限速的话把和这个模块相关的代码删除就行了
 1 import urllib.request as ure
 2 import urllib.parse
 3 import openpyxl
 4 import re
 5 import os
 6 from delayed import WaitFor
 7 def download(url,user_agent=\'FireDrich\',num=2,proxy=None):
 8     print(\'下载:\'+url)
 9     #设置用户代理
10     headers = {\'user_agent\':user_agent}
11     request = ure.Request(url,headers=headers)
12     #支持代理
13     opener = ure.build_opener()
14     if proxy:
15         proxy_params = {urllib.parse.urlparse(url).scheme: proxy}
16         opener.add_handler(ure.ProxyHandler(proxy_params))
17     try:
18         #下载网页
19         # html = ure.urlopen(request).read()
20         html = opener.open(request).read()
21     except ure.URLError as e:
22         print(\'下载失败\'+e.reason)
23         html=None
24         if num>0:
25             #遇到5XX错误时,递归调用自身重试下载,最多重复2次
26             if hasattr(e,\'code\') and 500<=e.code<600:
27                 return download(url,num=num-1)
28     return html
29 def writeXls(sale_list):
30     #如果Excel不存在,创建Excel,否则直接打开已经存在文档
31     if \'P20销售情况.xlsx\' not in os.listdir():
32         wb =openpyxl.Workbook()
33     else:
34         wb =openpyxl.load_workbook(\'P20销售情况.xlsx\')
35     sheet = wb[\'Sheet\']
36     sheet[\'A1\'] = \'颜色\'
37     sheet[\'B1\'] = \'版本\'
38     sheet[\'C1\'] = \'内存\'
39     sheet[\'D1\'] = \'评论\'
40     sheet[\'E1\'] = \'评论时间\'
41     x = 2
42     #迭代所有销售信息(列表)
43     for s in sale_list:
44         #获取颜色等信息
45         content = s[0]
46         creationTime = s[1]
47         productColor = s[2]
48         productSize = s[3]
49         saleValue = s[4]
50         # 将颜色等信息添加到Excel
51         sheet[\'A\' + str(x)] = productColor
52         sheet[\'B\' + str(x)] = productSize
53         sheet[\'C\' + str(x)] = saleValue
54         sheet[\'D\' + str(x)] = content
55         sheet[\'E\' + str(x)] = creationTime
56         x += 1
57     wb.save(\'P20销售情况.xlsx\')
58 
59 page = 0
60 allSale =[]
61 waitFor = WaitFor(2)
62 #预编译匹配颜色、版本、内存等信息的正则表达式
63 regex = re.compile(\'"content":"(.*?)","creationTime":"(.*?)".*?"productColor":"(.*?)","productSize":"(.*?)".*?"saleValue":"(.*?)"\')
64 #这里只下载20页数据,可以设置大一些(因为就算没评论信息,也能下载到一些标签信息等,所以可以if 正则没匹配的话就结束循环,当然,下面没处理这个)
65 while page<20:
66     if page==0:
67         url = \'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv176&productId=6733026&score=0&sortType=5&page=\' + str(page) + \'&pageSize=10&isShadowSku=0&fold=1\'
68     else:
69         url = \'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv176&productId=6733026&score=0&sortType=5&page=\' + str(page) + \'&pageSize=10&isShadowSku=0&rid=0&fold=1\'
70     waitFor.wait(url)
71     html = download(url)
72     html = html.decode(\'GBK\')
73     #以列表形式返回颜色、版本、内存等信息
74     sale = regex.findall(html)
75     #将颜色、版本、内存等信息添加到allSale中(扩展allSale列表)
76     allSale.extend(sale)
77     page += 1
78 
79 writeXls(allSale)

(三)  数据分析

1、      下载后的数据如下图所示。

 

2、      生成图表。

 

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3ff1njli6hwk0

 

以上是关于Python网络爬虫笔记:下载分析京东P20销售数据的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫——分析天猫iphonX的销售数据

Python网络爬虫实战:天猫胸罩销售数据分析

Python网络爬虫实战:根据天猫胸罩销售数据分析中国女性胸部大小分布

如何用爬虫抓取京东商品评价

Python爬虫编程思想(70): 项目实战--抓取京东商城手机销售排行榜

Python爬虫编程思想(70): 项目实战--抓取京东商城手机销售排行榜