数据解读京东上最受欢迎的面包

戳蓝字“CSDN云计算”关注我们哦!


640?wx_fmt=jpeg


作者: 黄超 就职顶新集团智能科技公司 数据从业者




640?前言640?



什么样的面包品牌最好卖?什么样的口感最受欢迎?相信每一位喜欢面包的朋友都会关心这些问题。本文通过爬取京东面包类数据,一方面回答大家关于此前关于面包的各种问题,另一方面也带大家了解一份完整的数据报告,可以从中有所借鉴。



640?数据爬取(部分代码)640?




构建解析详情页的代理



def disguiser():
'''
构建解析详情页的代理
'''

try:
req = request.Request('http://www.agent.cn/xdaili-api//greatRecharge/getGreatIp?spiderId=8f75fb741de34cfb95adf347910db7a9&orderno=YZ20191169208Yi1jmu&returnType=2&count=1')
resp = request.urlopen(req)
jsonIP = resp.read().decode()
jsonIP = re.sub(' ','',jsonIP)
ipList = re.findall('"ip":"(.*?)"',jsonIP)
portList = re.findall('"port":"(.*?)"',jsonIP)
value = list(map(lambda x,y : x + ':' + y,ipList, portList))
key = ['http']
ipDict = {key[index] : value[index] for index in range(len(key))}
print(ipDict)
# 1. 使用ProxyHandler,传入代理构建一个handler
handler = request.ProxyHandler(ipDict) # key: http/https val: ip:port
# 2. 使用上面创建的handler构建一个opener
opener = request.build_opener(handler)
print(opener)
except:
time.sleep(6)
req = request.Request('http://www.agent.cn/xdaili-api//greatRecharge/getGreatIp?spiderId=8f75fb741de34cfb95adf347910db7a9&orderno=YZ20191169208Yi1jmu&returnType=2&count=1')
resp = request.urlopen(req)
jsonIP = resp.read().decode()
jsonIP = re.sub(' ','',jsonIP)
ipList = re.findall('"ip":"(.*?)"',jsonIP)
portList = re.findall('"port":"(.*?)"',jsonIP)
value = list(map(lambda x,y : x + ':' + y,ipList, portList))
key = ['http']
ipDict = {key[index] : value[index] for index in range(len(key))}
print(ipDict)
# 1. 使用ProxyHandler,传入代理构建一个handler
handler = request.ProxyHandler(ipDict) # key: http/https val: ip:port
# 2. 使用上面创建的handler构建一个opener
opener = request.build_opener(handler)
return opener



解析详情页的内容


def parser(pageQueue, uaPool, priceRequestDoc, PRICEBASEURL, detailRequestDoc, open):
'''
解析详情页的内容
'''

detailUrl = pageQueue.get()[1]
print(detailUrl)
# 价格
PRICEURL = PRICEBASEURL + re.search('\d+',detailUrl).group()
priceRequestDoc = re.sub(r' ','',priceRequestDoc)
headers_for_price = dict(re.findall('([-\w\d]*?):(.*)',priceRequestDoc))
headers_for_price.update(uaPool[random.randint(0,len(uaPool)-1)]) # 获取商品价格信息请求的headers信息
req = request.Request(PRICEURL, headers = headers_for_price)
resp = open(req) #第一次响应
print(PRICEURL,'商品价格页请求响应码:',resp.getcode())
if resp.getcode() == 200:
info = resp.read().decode()
elif SERVER_ERROR_MIN <= response.status_code < SERVER_ERROR_MAX:
for i in range(5):
time.sleep(i**i) #可以继续优化,第一次1秒,第二次10秒,第三次100秒...
resp = open(req)
if resp.getcode() == 200:
break
elif SERVER_ERROR_MIN <= response.status_code < SERVER_ERROR_MAX:
if response.status_code == 404:
print('page not found')
elif response.status_code == 403:
print('have no right')
else:
pass
info = json.loads(info)
item_price = info[0]['p']

# 名称 品牌 是否含糖 保质期 配料 包装 商品产地...
detailRequestDoc = re.sub(r' ','',detailRequestDoc)
headers_for_detail = dict(re.findall('([-\w\d:]*):(.*)',detailRequestDoc))
headers_for_detail.update(uaPool[random.randint(0,9)]) # 获取商品价格信息请求的headers信息
req = request.Request(detailUrl, headers = headers_for_detail)
resp = open(req) # 第二个响应
print(detailUrl,'详情页请求响应:',resp.getcode())
if resp.getcode() == 200:
pass
elif SERVER_ERROR_MIN <= response.status_code < SERVER_ERROR_MAX:
for i in range(5):
time.sleep(i**i) #可以继续优化,第一次1秒,第二次10秒,第三次100秒...
resp = open(req)
if resp.getcode() == 200:
break
elif SERVER_ERROR_MIN <= response.status_code < SERVER_ERROR_MAX:
if response.status_code == 404:
print(detailUrl,'page not found')
elif response.status_code == 403:
print(detailUrl,'have no right')
else:
pass
parser = etree.HTMLParser(encoding = 'gbk')
html = etree.parse(resp, parser = parser)
print(html)
elements = html.xpath("//ul[@class='parameter2 p-parameter-list']//text() | //dl[@class='clearfix']//text()")
detailInfo = list(filter(lambda msg : len(msg.strip()) > 0 and msg, elements))
detailInfo = ('#').join(detailInfo)
try:
item_name = re.search('商品名称:(.*?)#',detailInfo).group(1)
except AttributeError:
# print('商品没有 item_name 信息')
item_name = 'n'
try:
item_id = re.search('\d+',detailUrl).group()
except AttributeError:
# print('商品没有 item_id 信息')
item_id = 'n'
# 大商品名称
elementTitle = html.xpath("//title//text()")[0]
elementTitle = elementTitle.strip()
item_fullName = re.search('(【.*】)*(.*)?【',elementTitle).group(2)
# 品牌
elementBrand = html.xpath("//*[@id='crumb-wrap']/div/div[1]/div[7]/div/div/div[1]/a/text()")
elementBrand = list(filter(lambda msg : len(msg.strip()) > 0 and msg, elementBrand))
try:
item_brand = elementBrand[0]
except IndexError:
item_brand = 'npl'
yield {
'item_id':item_id,
'item_fullName':item_fullName,
'item_name':item_name,
'item_price':item_price,
'item_brand':item_brand,
'gross_weight':gross_weight,
'item_origin':item_origin,
'item_certification':item_certification,
'processing_technology':processing_technology,
'packing_unit':packing_unit,
'is_suger':is_suger
}


由于公众号篇幅有限,无法展示本文全部代码,我们已将代码放入百度云盘。后台回复“面包”,可以获取本文代码。



640?分析正文640?



640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png


640?wx_fmt=png


 

640?wx_fmt=png


福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg

2、公众号后台回复“面包”,可以获取本文代码


推荐阅读:

  • 女神节 | 那些奋斗在IT领域的“女神”们

  • 云漫圈 | 如何给女朋友解释什么是HTTP

  • 趣挨踢 | 跳槽季,让我们一起攻克算法吧!

  • 互联网没有春天

  • 学 Python 没找对路到底有多惨?| 码书

  • 这份“插件英雄榜Top20”才是Chrome的正确打开方式!

  • 剧情反转! 创始人去世事件再爆新料, 1.8亿美元难道去了天堂?


640?wx_fmt=png喜欢就点击“好看”吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 下载mysql5.7.22

一、软件下载方式 第一种方式&#xff1a; 下载到本地&#xff0c;再从本地上传服务器上 第二种方式(推荐使用)&#xff1a; 使用wget软件链接直接下载到传服务器上 二、软件下载流程 官网地址 https://dev.mysql.com/downloads/mysql/ 第一种方式&#xff1a;点击即可…

IOS – OpenGL ES 图像CGA色彩滤镜 GPUImageCGAColorspaceFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

大数据背后的无奈与焦虑:“128元连衣裙”划分矮穷挫与白富美?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a; 刘丹我们通过卖东西收集数据&#xff0c;数据是阿里最值钱的财富。——马云春天万物复苏&#xff0c;沉睡了一个冬季的爱美之心呼之欲出&#xff0c;连衣裙在姑娘的心里发了芽&#xff0c;不过这次有些意外&#x…

Linux安装SonarQube和sonar-scanner详细安装及配置

文章目录技术选型一、快速入门1.1 上传、解压、创建用户、启动1.2 创建用户(elasticsearch不能以root用户启动)&#xff0c;并赋予权限1.3 切换用户&#xff0c;启动SonarQube1.4. 浏览器验证二、配置数据库信息&#xff1a;2.1 编辑sonar.properties文件2.2 添加数据库信息&am…

IOS – OpenGL ES 图像柏林噪点/花边噪点 GPUImagePerlinNoiseFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

win10 下安装、配置、启动mysql5.7

文章目录1. 下载MYSQL2. 解压文件3. 文件移动4. 新建my.ini5. 配置环境变量6. MYSQL安装7. my.ini配置1. 下载MYSQL 前期准备&#xff1a;安装链接&#xff1a; https://blog.csdn.net/qq_28569585/article/details/79072805 https://dev.mysql.com/downloads/mysql/5.7.html#d…

要闻君说:华为与故宫携手共建智慧紫禁城;央视315曝光瞄准大数据黑市;华为官宣称自己也有操作系统了;美国夸口启动6G研发?...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 大家好&#xff01;偶是要闻君。据说刚刚过去不久的315大曝光还真是“惊掉下巴”的节奏&#xff0c;这不要闻君也精选了一条&#xff0c;随着看看&#xff1f;文/要闻君近日&#x…

IOS – OpenGL ES 图像浮雕3d效果 GPUImageEmbossFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

Spring精华问答 | Spring框架有哪些主要模块?

Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持。今天就让我们一起来看看关于Spring的精华问答吧。1Q&#xff1a;什么是Spring框架&#xff1f;Spring框架有哪些主要模块&#xff1f;A&#xff1a;Spring框架是一个为…

IOS – OpenGL ES 图像加亮边缘 GPUImage3x3ConvolutionFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

IDEA 注释模板

文章目录一、 java 注释1. 类注释一、 java 注释 1. 类注释 类注释模板 创建类时会自动给添加注释 /***Deacription TODO*Author ${USER}*Date ${DATE} ${TIME}*Version 1.0**/路径 【File】-->【settings】-->【Editor】-->【File and Code Templates】-->【Fi…

云有约 | 蚂蚁金服bPaaS究竟是什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;孙浩峰去年9月&#xff0c;蚂蚁金服在杭州云栖ATEC发布了分布式金融核心套件bPaaS&#xff08; Business Platform As a Service &#xff09;&#xff0c;对外开放自身沉淀的“产品合约”、“资产交换”、“资产核…

IOS – OpenGL ES 图像马赛克圆点 GPUImagePolkaDotFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

SpringCloud企业实战专栏

Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具&#xff08;例如配置管理&#xff0c;服务发现&#xff0c;断路器&#xff0c;智能路由&#xff0c;微代理&#xff0c;控制总线&#xff09;。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员…

都道业务提升坑大事儿多,但英特尔云方案却说“简单”

戳蓝字“CSDN云计算”关注我们哦&#xff01;设想一下&#xff0c;当市场闪现新的业务机遇时&#xff0c;企业能够做到不担心繁杂的技术问题而做出快速响应&#xff1b;当企业无论何时都可以不用考虑工作负载怎样&#xff0c;创新想法立马可以快速转化为原型甚至产品&#xff0…

rsync 一条命令实现远程文件传输

rsync简介&#xff1a; rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步&#xff0c;支持本地复制&#xff0c;或者与其他SSH、rsync主机同步。 它的特性如特点&#xff1a; 1、可以镜像保存整个目录树和文件系统。2、可以很容易做到保…

IOS – OpenGL ES 图像侵蚀边缘黑白模糊 GPUImageErosionFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

Windows环境 下载、安装、使用 RabbitMQ_(入门试炼_第1篇)

文章目录一、软件介绍及下载二、安装Erlang2.1. 双击运行2.2. 新建一个系统变量2.3. 将新建的系统变量添加在Path中&#xff1a;2.4. 打开cmd2.5. 验证三、安装RabbitMQ3.1. 双击运行3.2. 安装四、RabbitMQ后台管理插件4.1. cmd进入sbin目录4.2. 开启RabbitMQ管控台4.3. 启动Ra…

在线公开课 | 从理论走向实践,多角度详解Cloud Native

戳蓝字“CSDN云计算”关注我们哦&#xff01;本次直播课程是由京东云产品研发部中间件负责人李道兵从Cloud Native概念入手到实践出发&#xff0c;深度解析了Cloud Native年度热词背后所隐含的技术特征。我们将整理后的视频及内容资料在这里分享给大家&#xff0c;没能到场的小…