使用Python对淘宝商品并分析

  • 1.数据获取和保存
  • 2.数据清洗和处理
  • 3.分析数据,并且使用tableau实现数据可视化

1.数据获取和保存

由于近年来淘宝的反爬措施逐渐完善,爬取难度变大,在爬取时必须要登录之后才能查看相关的商品信息,淘宝数据是通过动态加载的方式显示的,所以本文使用selenium模拟浏览器操作爬取商品页详情信息。

需要提取安装和selenuim和浏览器驱动chromedriver,由于chorme浏览器的自动更新,所以导致我的chrome浏览器版本和chromedriver版本不一致,所以使用了
chromedriver_path=r’C:\ProgramFiles\Google\Chrome\Application\chromedriver.exe’

browser = webdriver.Chrome(executable_path=chromedriver_path) 的方法成功加载了浏览器,在爬取淘宝美食的时候需要手动扫码等陆才可以保证爬取的顺利进行,最终成功爬取2733条记录。

import re
import time
import pymongo
from selenium import webdriver
from pyquery import PyQuery as pq
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECKEYWORD ='美食'
MONGO_TABLE = 'meishi'chromedriver_path=r'C:\Program Files\Google\Chrome\Application\chromedriver.exe'
browser = webdriver.Chrome(executable_path=chromedriver_path)
wait = WebDriverWait(browser, 10)
client = pymongo.MongoClient('localhost',27017)
cilen = client['taobao']
db = cilen['food']def search_page():print('正在搜索')try:browser.get('https://www.taobao.com')input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#q")))submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_TSearchForm > div.search-button > button')))input.send_keys(KEYWORD)submit.click()total = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > div.total')))get_products()return total.textexcept TimeoutException:return search_page()def next_page(page_number):print('翻页中',page_number)try:input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > input")))submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit')))input.clear()input.send_keys(page_number)submit.click()wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > ul > li.item.active > span'),str(page_number)))get_products()except TimeoutException:next_page(page_number)def get_products():wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-itemlist .items .item')))html = browser.page_sourcedoc = pq(html)items = doc('#mainsrp-itemlist .items .item').items()for item in items:product = {'price':item.find('.price').text(),'deal':item.find('.deal-cnt').text()[:-3],'title':item.find('.title').text(),'shop':item.find('.shop').text(),'location':item.find('.location').text()}print(product)save_to_mongo(product)def save_to_mongo(result):try:if db[MONGO_TABLE].insert(result):print('存储成功',result)except Exception:print('存储失败',result)def main():try:total = search_page()total = int(re.compile('(\d+)').search(total).group(1))for i in range(2,total+1):time.sleep(3)next_page(i)except Exception:print('爬取错误')finally:browser.close()if __name__ == '__main__':main()

2.数据清洗和处理

在mongodb Compass看到以下数据:
在mongodb的bin目录下使用命令:mongoexport -d taobao -c meishi.food -f _id,price,deal,title,shop,location–csv -o ./D:/kesci.淘宝美食.csv
得到下表:

使用jupyter notebook读取数据
具体的清洗目标,这里以第一列数据为例:

初始值 清洗后的值
¥24.90 24.90
5.5万+ 5.5
湖北 荆州 province:湖北,city:荆州
import re
import pandas as pd
data=pd.read_csv("D:/kesci/淘宝食物.csv")#处理price、deal
data['price']=data['price'].map(lambda x:x.replace('¥',""))
data['deal']= data['deal'].map(lambda x: float(x.split("万")[0])*10000 if '万' in x else float(str(x).replace('+','')))#处理location
data['province']=data['location'].map(lambda x:x.split(" ")[0])
for i in range(len(data)):location=data.loc[i,'location'].split(" ")if len(location)>1:data.loc[i,'city']=location[1]else:data.loc[i,'city']=location[0]data.drop('location',axis=1,inplace=True)
data.head()

得到下图所示的数据:

3.分析数据,并且使用tableau实现数据可视化

下图是销售额在300000以上的店铺的销售和商品的平均单价:

小胡鸭食品旗舰店销售额远超其他店铺,但其店铺内商品的平均单价处于偏低的水平,这表明大部分消费者面对商品单价低一点的商品表现出更强的兴趣,大多数消费者还是更能接收单次较低的消费。

以下是各省的销售额排行:
可以看出,湖北省基本是处于一家独大的地位,其销售额甚至是第二名浙江的四倍之多,甚至是其他省数十背,可见湖北人民对于淘宝上的美食非常感兴趣,可谓是‘吃货’最多的一个省了。
销售额超过三百万的省份有湖北、浙江、上海、四川、广西、福建、江苏、湖南,中国的淘宝美食销售基本就集中在这些地区。

最后:
对各商品title进行文本分析,观察各种的美食关键词的出现频率,商品标题进行词频分析及可视化,使用jieba库以及一个中文常用停用词的文件用来排除一些无意义的常见词(例如:的、了之类的词)。

import jieba
from collections import Counter
stopwords = [line.strip() for line in open(r"中文停用词.txt", 'r', encoding='utf-8').readlines()]
word=Counter(jieba.cut_for_search(",".join(data['title'].values)))
new_word={}
for i,j in word.items():if i not in stopwords:new_word[i]=j
word=Counter(new_word)



零食、小吃和特产这三个关键词排名前三,这表面消费者在淘宝网进行购买美食是大部分的需求是当作零食来食用,而不是当做正餐进行食用,淘宝卖家应重点关注零食市场。人们的需求集中在便捷和速食上,因此可以方便食用的早餐也是一大可以挖掘的市场。

使用Python爬虫爬取淘宝商品并分析相关推荐

  1. 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

    项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...

  2. python爬虫 — 爬取淘宝商品信息

    (一)确定需要爬取的信息 在爬取前首先确定需要获取的信息,打开taobao,在搜索框中输入,需要获取的商品的信息,比如ipad,点击搜索 就可以看到许多的ipad,选择其中的一款商品,比如第一个 可以 ...

  3. python爬虫爬取淘宝商品并保存至mongodb数据库

    使用工具介绍 python3.8 selenium(请确保你已经成功安装了谷歌驱动chromedriver) mongodb数据库 mongo-compass 谷歌浏览器 分析请求链接 打开淘宝首页的 ...

  4. Python + selenium 爬取淘宝商品列表及商品评论 2021-08-26

    Python + selenium 爬取淘宝商品列表及商品评论[2021-08-26] 主要内容 登录淘宝 获取商品列表 获取评论信息 存入数据库 需要提醒 主要内容 通过python3.8+ sel ...

  5. python淘宝爬虫_python爬虫爬取淘宝商品信息

    本文实例为大家分享了python爬取淘宝商品的具体代码,供大家参考,具体内容如下 import requests as req import re def getHTMLText(url): try: ...

  6. python电商数据挖掘_Python 爬取淘宝商品数据挖掘分析实战

    作者 孙方辉 本文为CDA志愿者投稿作品,转载需授权 项目内容 本案例选择>> 商品类目:沙发: 数量:共100页 4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目 ...

  7. Python requests爬取淘宝商品信息

    作者:achen 联系方式:wh909077093 这里记一下大概的思路以及实现方法,有基础的小伙伴看了基本就能实现了,如果有业务需要可以联系我哈哈哈哈哈哈 本文代码参考猪哥66的思路 项目内容 指定 ...

  8. python简单爬取淘宝商品信息

    爬取淘热卖商品"泡面"的信息,包括商品名称,店铺,链接,付款人数,价格等,用csv保存 import requests import csv import time import ...

  9. 简单使用Python爬虫爬取淘宝网页商品信息

    最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...

  10. python+selenium爬取淘宝商品信息+淘宝自动登录——爬虫实战

    1.前言 继续学习爬虫内容,这回是以selenium模拟操作进行抓取,其中有几个需要登陆的注意事项. 2.自动登陆+查找页面 由于现在淘宝的反爬机制,需要登陆才好下一步操作.在搜索输入后页面会调入登陆 ...

最新文章

  1. 轻松应对IDC机房带宽突然暴涨问题
  2. iOS 11开发教程(四)iOS11模拟器介绍一
  3. MaxCompute+ Geabase 大话健康知识图谱取经之路
  4. 给vs2010安装上cocos2d-x的模版
  5. c++ map 析构函数_C++|类继承关系中的虚函数、虚析构函数、虚基类
  6. 工作278:控制数据从字典表获取
  7. spring学习(43):属性注入中注入引用对象
  8. [SDOI2006]保安站岗 树dp
  9. 17秋 SDN课程 第一次作业
  10. origin游戏服务器引擎
  11. JMH(java代码的微基准测试)入门和汇总
  12. ubuntu20.0.4系统中安装微信
  13. wpf自己画表盘_练手WPF(一)——模拟时钟与数字时钟的制作(上)
  14. 服务器传奇网站搭建修改教程,传奇架设教程如何修改爆率
  15. java实现电脑定时关机重启_利用任务计划程序实现电脑自动定时关机
  16. 【动手学习深度学习】01 安装运行环境——Windows
  17. 计算机视觉基础知识复习
  18. 车载毫米波雷达测试方法
  19. android平台多路摄像头实现方式的简析
  20. 迅捷音频转换器如何提取音频文件教程

热门文章

  1. 服务器2003系统安装时蓝屏,安装2003server操作系统蓝屏是怎么回事?
  2. 报错解决:Failed to load config “react-app“ to extend from.
  3. (三)Lucene中Index.ANALYZED分词相关
  4. Chrome 配置samesite=none方式
  5. 用python算股票β系数_利用 Python 计算资产 beta 值和市场 beta 值
  6. MySQL多个关键词检索字段
  7. 卷积神经网络通俗易懂理解
  8. iOS中微信语音动画
  9. autojs自动添加QQ群成员好友脚本,QQ爆粉源码
  10. MongoDB数据库入门到精通看这一篇就够了