项目背景

10月14日凌晨,苹果召开了第二场秋季新品发布会,正式推出了 iPhone 12 系列新机,一共包含 iPhone 12 mini、iPhone 12、iPhone 12 Pro、iPhone 12 Pro Max 四款机型,是有史以来,苹果单场发布会发布 iPhone 新机数量最多的一次。
从产品定位来看,iPhone 12 mini 和 iPhone 12 比较接近,Pro 系列则属于更为高端的版本。
iphone12 和iphone12 mini屏幕大小不同:
Phone 12 mini 和 iPhone 12 屏幕大小有所不同,其中 mini 属于 5.4英寸小屏,而 iPhone 12 则为 6.1英寸屏幕,相对要大一些。此外,两者的屏幕分辨率略有不同, iPhone 12分辨率比mini略高一些,但 mini 的 ppi 要略高些。相同的地方则在于,两者均为OLED屏幕,均支持XDR显示屏。
iphone12 和iphone12 mini续航大小不同:
每年新 iPhone 的电池容量,都需要等到上市,通过机构拆解来准确获悉,今年的 iPhone 12 系列应该也不例外。不过,对于iPhone 12和mini的续航表现,我们大致可以通过官方给出的视频和音频播放时间来推测。
从官方给出的信息来看,iPhone 12支持最长17小时视频播放或65小时音频播放,与上一代的 iPhone 11 续航水平一致。而 iPhone 12 mini 则最长支持15小时视频播放或50小时音频播,比iPhone 12续航时间要短一些,
iphone12 和iphone12 mini双卡支持不同:
网络制程上,iPhone 12 mini 和 iPhone 12 均支持5G网络,不过 mini 是单卡槽设计,不支持双卡双待,而 iPhone 12 则为 双卡设计,支持双卡双待。
综合对比来看,iPhone 12 mini 和 iPhone 12 区别并不明显,仅仅是 iphone12mini屏幕大小、续航、是否支持双卡等方面的区别,而 差价 800元,对于打算入手iPhone的苹果用户来说,很难选择 现在我们去京东淘宝页面来爬取iphone12mini用户购买后的评论数据进行分析,从而确定来选择购买哪一台

甘特图

甘特图.vsd
图片.png

整体设计思路

图片.png
京东url:https://item.jd.com/10023068375912.html
淘宝url:https://item.taobao.com/item.htm?id=630068045150&ali_refid=a3_430673_1006:1102466130:N:IEFpic726ynfbEx5JZZ3Xv7tthcrkQ91:b642ef54eac64913cac01c83ca2cc5ad&ali_trackid=1_b642ef54eac64913cac01c83ca2cc5ad&spm=a2e0b.20350158.31919782.1

重点难点

requests库,对数据的抓取

找到网站存储目标数据的文件

1.进入 https://item.jd.com/10023068375912.html
2.找到目标页面按f12
3.点击网络加载评论
图片.png
4.搜索找到目标文件
图片.png
图片.png

request库进行抓取的时候使用UA,cookies,Referer伪装获取到数据

headers={
‘Cookie’:’jda=122270672.16045645684111321421374.1604564568.1610328806.1610334097.9; unpl=V2_ZzNtbUMAQEZzD0BTeExZDWIHQlhKBENGcQhOUChKVVI3VBQIclRCFnUUR1RnGVwUZgsZWUdcQhVFCEdkeBBVAWMDE1VGZxBFLV0CFSNGF1wjU00zQwBBQHcJFF0uSgwDYgcaDhFTQEJ2XBVQL0oMDDdRFAhyZ0AVRQhHZHseXQBjBBdZRV5GFXUIRFd7HF8FZQUXbXJQcyVFD0dQfhxeNWYzE20AAx8XfQ1EVXJUXAJmBhZaR1NEHHAIRlR5GlwAZAMQW0dnQiV2; jdv=76161171|baidu-pinzhuan|t_288551095_baidupinzhuan|cpc|0f3d30c8dba7459bb52f2eb5eba8ac7d_0_0f2b76762d4945a49b1b5195bb8faf7d|1610330040439; jdu=160456456…15; ipLoc-djd=15-1213-3038-59931; shshshfp=289b54b00baf200ac9fb65759665948e; shshshfpa=0cfa2d8c-01bc-0b41-8322-25ae15a8543d-1609813883; shshshfpb=zx38YWB2EDRZ8M6e4lb5L7w%3D%3D; jwotest_product=99; PCSYCityID=CN_330000_0_0; 3AB9D23F7A4B3C9B=5Y54BWANBVLTNMDDGG6P5MZBO4SAB4OBADRQLJ3QNAPU6JO6NPV4V57ZWNTKVQSTAZQ4WRKJHY37VL544S5GVKVJYI; shshshsID=3f24543ba598a43dca9102f18917fe9e_5_1610334182681; jdb=122270672.6.16045645684111321421374|9.1610334097; __jdc=122270672; JSESSIONID=FC3BC5059CEDA3862E2FE9ABCB693EE5.s1’,
‘Referer’:’https://item.jd.com/10023068375912.html‘,
‘User-Agent’:’Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0’
}

正则表达式,对抓取的文件数据转化为json格式数据

a=kw.replace(“fetchJSON_comment98(“, “”)
b=a.replace(“);”,“”)

将json格式的数据转化为python代码可以使用的数据

jsonData = json.loads(b)

独立使用Django orm文件的配置

import os
import django
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “online_judge.settings”)
#os.environ.setdefault设置环境变量,这里的pga_lord就是你的项目名称
django.setup()
from oj.models import *
#如果您以独立方式运行Django应用程序,则使用django.setup()。它将加载您的设置并填充Django的应用程序注册表。

使用Django orm独立配置文件要对数据库增加清洗后的数据

for data in jsonData[“comments”]:
shujuku = JingdongTaobao(yonghu=data[“nickname”],
xinghao=(str(data[“productColor”])) + ‘ ‘ + (str(data[“productSize”])),
pinglun=data[“content”], shijian=data[“creationTime”])
shujuku.save()

存在不足

目标网站会定时修改UA ,cookies,referer参数来阻止我们爬取,所以我们要 定时更新

参考文献

https://www.yuque.com/ol1q37/gi94xp/zgzd5o
https://www.cnblogs.com/lweiser/p/11033005.html
https://www.jb51.net/article/135007.htm
https://www.yuque.com/ol1q37/gi94xp/tr16fq
https://www.yuque.com/ol1q37/gi94xp/kfkkmm
https://www.yuque.com/ol1q37/gi94xp/kfuoo8

代码

京东代码

  1. import requests
  2. import re
  3. import json
  4. import os
  5. for k in range(10):
  6. url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10023068375912&score=0&sortType=5&page='+str(k)+'&pageSize=10&isShadowSku=0&fold=1'
  7. headers={
  8. 'Cookie':'__jda=122270672.16045645684111321421374.1604564568.1610328806.1610334097.9; unpl=V2_ZzNtbUMAQEZzD0BTeExZDWIHQlhKBENGcQhOUChKVVI3VBQIclRCFnUUR1RnGVwUZgsZWUdcQhVFCEdkeBBVAWMDE1VGZxBFLV0CFSNGF1wjU00zQwBBQHcJFF0uSgwDYgcaDhFTQEJ2XBVQL0oMDDdRFAhyZ0AVRQhHZHseXQBjBBdZRV5GFXUIRFd7HF8FZQUXbXJQcyVFD0dQfhxeNWYzE20AAx8XfQ1EVXJUXAJmBhZaR1NEHHAIRlR5GlwAZAMQW0dnQiV2; __jdv=76161171|baidu-pinzhuan|t_288551095_baidupinzhuan|cpc|0f3d30c8dba7459bb52f2eb5eba8ac7d_0_0f2b76762d4945a49b1b5195bb8faf7d|1610330040439; __jdu=160456456…15; ipLoc-djd=15-1213-3038-59931; shshshfp=289b54b00baf200ac9fb65759665948e; shshshfpa=0cfa2d8c-01bc-0b41-8322-25ae15a8543d-1609813883; shshshfpb=zx38YWB2EDRZ8M6e4lb5L7w%3D%3D; jwotest_product=99; PCSYCityID=CN_330000_0_0; 3AB9D23F7A4B3C9B=5Y54BWANBVLTNMDDGG6P5MZBO4SAB4OBADRQLJ3QNAPU6JO6NPV4V57ZWNTKVQSTAZQ4WRKJHY37VL544S5GVKVJYI; shshshsID=3f24543ba598a43dca9102f18917fe9e_5_1610334182681; __jdb=122270672.6.16045645684111321421374|9.1610334097; __jdc=122270672; JSESSIONID=FC3BC5059CEDA3862E2FE9ABCB693EE5.s1',
  9. 'Referer':'https://item.jd.com/10023068375912.html',
  10. 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0'
  11. }
  12. req =requests.get(url=url,headers=headers)
  13. kw=req.text
  14. a=kw.replace("fetchJSON_comment98(", "")
  15. b=a.replace(");","")
  16. jsonData = json.loads(b)
  17. for data in jsonData["comments"]:
  18. print(data["content"])
  19. print(data["creationTime"])
  20. print((str(data["productColor"])) + ' ' + (str(data["productSize"])))
  21. print(data["nickname"])
  22. shujuku = JdTb(yonghu=data["nickname"],
  23. xinghao=(str(data["productColor"])) + ' ' + (str(data["productSize"])),
  24. pinglun=data["content"], shijian=data["creationTime"])
  25. shujuku.save()

图片.png
图片.png