首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

红袜子、红内裤成最In年货,Python真相了

作者 | 阿广

编辑 | Jane

出品 | Python大本营

【导语】腊月二十八,你的年货都备齐了吗?今天的文章我们专门爬取了几千条年货购买数据,看看大家都在买什么,还分析了一些有意思的数据。下面就一起来看一下 2019 年的年货购买报告~

前言

先看看今天将带大家分析哪些内容:

城市/农村购买年货占比

购买大军是80后还是90后?

年货年度高频词总结

卖年货的商铺排名

各个省的年货销量是什么情况?

年货订单最多的省份 TOP10 分析

年度商品热度 TOP3

技术分析

本次爬虫使用 selenium,数据库使用 mysql,分词使用 jieba,图表显示使用 echars+wordart。

数据介绍

本文使用 selenium 爬取某宝共 4393 条有效数据,如有侵犯某宝权益,本人会及时删除整个项目。

实现过程

使用 pymysql 连接数据库

1importpymysql.cursors

2conn = pymysql.connect(host='localhost',

3user='root',

4password='qweqwe',

5db='taobao-aguang',

6charset='utf8',

7cursorclass=pymysql.cursors.DictCursor)

8cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

我们爬取的步骤是:搜索某宝网站->爬取年货->下一页

主函数 main()

1defmain():

2cursor.execute("create table if not exists products(price text, deal text, title text, shop text, location text)")

3total = search()

4total = int(re.compile('(\d+)').search(total).group(1))

5foriinrange(2, total +1):

6next_page(i)

7browser.close()

8conn.close()

搜索函数 search()

1defsearch():

2try:

3browser.get('https://www.taobao.com')

4input = wait.until(

5EC.presence_of_element_located((By.CSS_SELECTOR,'#q'))

6)

7submit = wait.until(

8EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_TSearchForm > div.search-button > button'))

9)

10input.send_keys('年货')

11submit.click()

12total = wait.until(

13EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > div.total'))

14)

15get_products()

16returntotal.text

17exceptTimeoutException:

18returnsearch()

获得某宝上下一页的内容 next_page(page_number)

1defnext_page(page_number):

2try:

3input = wait.until(

4EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > div.form > input'))

5)

6submit = wait.until(

7EC.element_to_be_clickable((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit'))

8)

9input.clear()

10input.send_keys(page_number)

11submit.click()

12wait.until(

13EC.text_to_be_present_in_element((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > ul > li.item.active > span'), str(page_number))

14)

15get_products()

16exceptTimeoutException:

17next_page(page_number)

获得年货产品 get_products()

1defget_products():

2wait.until(

3EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-itemlist .items .item'))

4)

5html = browser.page_source

6doc = pq(html)

7items = doc('#mainsrp-itemlist .items .item').items()

8foriteminitems:

9product = {

10'price': item.find('.price.g_price.g_price-highlight').text(),

11'deal': item.find('.deal-cnt').text()[:-3],

12'title': item.find('.row.row-2.title').text(),

13'shop': item.find('.shop').text(),

14'location': item.find('.location').text()

15}

16print(product)

17price = product['price']

18deal = product['deal']

19title = product['title']

20shop = product['shop']

21location = product['location']

22sql ="insert into products(price,deal,title,shop,location) values('%s', '%s', '%s', '%s', '%s');"% (price, deal, title, shop, location)

23try:

24withconn.cursor()ascursor:

25cursor.execute(sql)

26conn.commit()

27print('数据插入成功')

28exceptExceptionase:

29print('数据插入失败')

统计结果

2019 年春节前几天,我用了海量数据为大家解读中国年货的“迁徙”图景,呈现一个消费升级、红红火火的中国年!

下面我们看一下城市/农村占比,移动端和PC端购买年货占比

1# 农村成交占比

2x_major_Locator = MultipleLocator(country.number)

3# 移动端成交占比

4y_major_Locator = MultipleLocator(city.number)

5

6plt.figure(1)

7plt.grid(True, linestyle="-", color="b", linewidth="0.5")

结果如下:

下面分析一下购买的主力军是 90 后还是 80 后呢?下面是结果!

1# 80后人数

2x_major_Locator = MultipleLocator(eight.number)

3# 90后人数

4y_major_Locator = MultipleLocator(nine.number)

5# 其他人数

6z_major_Locator = MultipleLocator(other.number)

7

8plt.figure(1)

9plt.grid(True, linestyle="-", color="b", linewidth="0.5")

可见 80 后的购买力量依然是大于 90 后的。

通过分析数据,使用苹果作为基础模板,得到了热门年货搜索词表。

某宝上的年货统计词中,年货、零食、大礼包、批发、礼盒等词语出现较多。

你们想知道备年货的商铺中所占的比例各多少吗?下面来看一看!

通过上表可看出,某猫超市卖年货的商家占了半壁江山,意料之内。第二名是 gigwwx,这是什么鬼?刚才查了一下,原来是卖喜糖的企业店,大家要甜甜蜜蜜呀~

那么全国范围内各省的年货销量是什么情况呢?

总体来看,沿海地区的销量领先于内地地区。可见,浙江,上海,江苏等年货销量较大,也许是和浙江温州皮革厂倒闭了有关系?

下面让我们来看一下销量和价格的关系:

整体的趋势是价格越高,销量越少。

将数据上传到表单中

1#上传表单

2classUpload(Form):

3pcap = FileField('pcap', validators=[DataRequired()])

然后对表单按照省份做分析得出年货订单 TOP10

可以看出,年货订单第一的省份为:广东省。广东人民是真有钱啊。

通过数据得出本年度商品热门为:

红内裤

红袜子

红手链

红红火火过大年,红色果然是首选,大家的年货都买了什么?

源码地址:

https://github.com/zandaoguang/year_goods

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190202G0X0TS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券