• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!

python 搞代码 4年前 (2022-01-08) 18次浏览 已收录 0个评论
文章目录[隐藏]

端午节快要到了,旅游?回家?拜访亲友?少不了要带上粽子.那么:选择什么牌子的粽子呢?选择什么口味的粽子呢?选择什么价格区间呢?今天爬取了京东上面的 “粽子数据” 进行分析,看看有啥发现吧!,需要的朋友可以参考下

一、前言

本文就从数据爬取数据清洗数据可视化,这三个方面入手,但你简单完成一个小型的数据分析项目,让你对知识能够有一个综合的运用。

整个思路如下:

  • 爬取网页:https://www.jd.com/
  • 爬取说明: 基于京东网站,我们搜索网站“粽子”数据,大概有100页。我们爬取的字段,既有一级页面的相关信息,还有二级页面的部分信息;
  • 爬取思路: 先针对某一页数据的一级页面做一个解析,然后再进行二级页面做一个解析,最后再进行翻页操作;
  • 爬取字段: 分别是粽子的名称(标题)、价格、品牌(店铺)、类别(口味);
  • 使用工具: requests+lxml+pandas+time+re+pyecharts
  • 网站解析方式: xpath

最终的效果如下:

二、数据爬取

京东网站,一般是动态加载的,也就是说,采用一般方式只能爬取到某个页面的前30个数据(一个页面一共60个数据)。

基于本文,我仅用最基本的方法,爬取了每个页面的前30条数据(如果大家有兴趣,可以自行下去爬取所有的数据)。

那么,本文究竟爬取了哪些字段呢?我给大家做一个展示,大家有兴趣,可以爬取更多的字段,做更为详细的分析。

下面为大家展示爬虫代码:

 import pandas as pd import requests from lxml import etree import chardet import time import re def get_CI(url):     headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; X64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36'}     rqg = requests.get(url,headers=headers)     rqg.encoding = chardet.detect(rqg.content)['encoding']     html = etree.HTML(rqg.text)          # 价格     p_price = html.xpath('//div/div[@class="p-price"]/strong/i/text()')          # 名称     p_name = html.xpath('//div/div[@class="p-name p-name-type-2"]/a/em')     p_name = [str(p_name[i].xpath('string(.)')) for i in range(len(p_name))]          # 深层url     deep_ur1 = html.xpath('//div/div[@class="p-name p-name-type-2"]/a/@href')     deep_url = ["http:" + i for i in deep_ur1]          # 从这里<span style="color:transparent">来源gaodai#ma#com搞*!代#%^码网</span>开始,我们获取“二级页面”的信息                brands_list = []     kinds_list = []     for i in deep_url:         rqg = requests.get(i,headers=headers)         rqg.encoding = chardet.detect(rqg.content)['encoding']         html = etree.HTML(rqg.text)                                    # 品牌         brands = html.xpath('//div/div[@class="ETab"]//ul[@id="parameter-brand"]/li/@title')         brands_list.append(brands)                                  # 类别         kinds = re.findall('>类别:(.*?)</li>',rqg.text)         kinds_list.append(kinds)                                 data = pd.DataFrame({'名称':p_name,'价格':p_price,'品牌':brands_list,'类别':kinds_list})     return(data)                             x = "https://search.jd.com/Search?keyword=%E7%B2%BD%E5%AD%90&qrst=1&wq=%E7%B2%BD%E5%AD%90&stock=1&page=" url_list = [x + str(i) for i in range(1,200,2)] res = pd.DataFrame(columns=['名称','价格','品牌','类别']) # 这里进行“翻页”操作 for url in url_list:     res0 = get_CI(url)     res = pd.concat([res,res0])     time.sleep(3) # 保存数据 res.to_csv('aliang.csv',encoding='utf_8_sig') 

最终爬取到的数据:

三、数据清洗

从上图可以看到,整个数据算是很整齐的,不是特别乱,我们只做一些简单的操作即可。

先使用pandas库,来读取数据。

 import pandas as pd df = pd.read_excel("粽子.xlsx",index_col=False) df.head()

结果如下:

我们分别针对 “品牌”“类别 两个字段,去掉中括号。

 df["品牌"] = df["品牌"].apply(lambda x: x[1:-1]) df["类别"] = df["类别"].apply(lambda x: x[1:-1]) df.head()

结果如下:

①  粽子品牌排名前10的店铺

 df["品牌"].value_counts()[:10]

结果如下:

② 粽子口味排名前5的味道

 def func1(x):     if x.find("甜") > 0:         return "甜粽子"     else:         return x df["类别"] = df["类别"].apply(func1) df["类别"].value_counts()[1:6] 

结果如下:

以上就是端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址