爬取所需环境

selnium安装

  1. Win+R输入cmd敲回车进入到cmd窗口;
  2. 输入“pip3 install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple”或“pip install selenium”敲回车,等待,就安装好了(附加莫管:输入“pip uninstall matplotlib”进行matplotlib的卸载)。记得测试哈:
  3. 测试:安装好后,测试是否安装成功,命令行输入“python”进入python idel,输入“import selnium”运行,没有报错,即为安装成功:
  4. 附:安装其他所需库方法类似“pip3 install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple”
    chromedriver.exe安装
    1.百度搜索下载与本地安装Chrome对应版本,将其放到Chrome安装路径,在配置环境变量即可:

    2.Path中新建一个,存入以下类似Chrome安装目录路径,保存即可:

爬取淘宝手机数据代码:

# 导入模块
from selenium import webdriver
import time
import csv
import re# 搜索商品,获取商品页码
def search_product(key_word):key_word += "手机"# 定位输入框browser.find_element_by_id("q").send_keys(key_word)# 定义点击按钮,并点击browser.find_element_by_class_name('btn-search').click()# 最大化窗口:为了方便我们扫码登录淘宝browser.maximize_window()# 等待15秒,给足时间我们扫码登录time.sleep(15)# 定位这个商品“页码”,获取到“共100页“这个文本page_info = browser.find_element_by_xpath('//div[@class="total"]').text# 需要注意的是:findall()返回的是一个列表,虽然此时只有一个元素它也是一个列表。page = re.findall("(\d+)", page_info)[0]print(key_word + "有" + str(page) + "页信息,请问需要爬取多少页?")page = int(input("请输入需要爬取的页面: "))return page# 获取商品信息数据
def get_data():# 通过页面分析发现:所有的信息都在items节点下items = browser.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq  "]')for item in items:# 参数信息pro_desc = item.find_element_by_xpath('.//div[@class="row row-2 title"]/a').text# 价格pro_price = item.find_element_by_xpath('.//strong').text# 付款人数buy_num = item.find_element_by_xpath('.//div[@class="deal-cnt"]').text[:-3]# 保存到csv文件with open('{}手机.csv'.format(key_word), mode='a', newline='', encoding='utf-8-sig') as f:csv_writer = csv.writer(f, delimiter=',')csv_writer.writerow([pro_desc, pro_price, buy_num])def main():# 浏览器要获取的链接browser.get('https://www.taobao.com/')# 要获取的关键字page = search_product(key_word)print("开始爬取:")page_num = 0while page != page_num:print("*" * 60)print("正在爬取第{}页".format(page_num + 1))# 爬取页面browser.get('https://s.taobao.com/search?q={}&s={}'.format(key_word, page_num * 44))browser.implicitly_wait(15)get_data()page_num += 1print("数据爬取完毕!")if __name__ == '__main__':key_word = input("请输入你要搜索的手机品牌:")browser = webdriver.Chrome()main()

将爬取数据进行清洗,并可视化展示:

import pandas as pd
import matplotlib.pyplot as plt
import jieba
from imageio import imread
from wordcloud import WordCloud
# 项目
project = "华为手机"
# 显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 这两行需要手动设置
plt.rcParams['axes.unicode_minus'] = False
# 文件全路径+文件名
csv_file_name = '{}.csv'.format(project)
# 获取文件中的内容
data = pd.read_csv(open(csv_file_name, encoding='utf-8'), header=None)
# 设置列名
data.columns = ["desc", "price", "buynum"]# 可视化1:销量前5名手机型号折线图
# 分析:哪一型号手机销量最好
def huatu1(data_ten):x_values = data_ten["desc"]y_values = data_ten["buynum"]plt.plot(x_values, y_values, linewidth=4)plt.xlabel("手机型号", size='16')  # 设置横坐标标签plt.ylabel('销量', size='16')  # 设置纵坐标标签plt.title("销量前5名手机型号折线图", fontsize=20)# 保存图表并命名,bbox_inches='tight'表示将图表多余的空白区域裁减掉plt.savefig("销量前5名手机型号折线图", bbox_inches='tight')plt.show()# 可视化2:销量前10名手机价格折线图
# 分析:找到在这前10类好销量中,价格最低的手机
def huatu2(data_ten):x_values = data_ten["desc"]y_values = data_ten["price"]plt.plot(x_values, y_values, linewidth=4)plt.xlabel("手机型号", size='16')  # 设置横坐标标签plt.ylabel('价格', size='16')  # 设置纵坐标标签plt.title("销量前5名手机价格柱状图", fontsize=20)# 保存图表并命名,bbox_inches='tight'表示将图表多余的空白区域裁减掉plt.savefig("销量前5名手机价格柱状图", bbox_inches='tight')plt.show()# 可视化3:参数信息词云图
# 分析:发现市面上在售手机注重的信息参数
def huatu3(word_count):# 1、读取背景图片back_picture = imread("backg.jpg")# 2、设置词云参数wc = WordCloud(font_path="G:\\6Tipdm\\wordcloud\\simhei.ttf",background_color="white",max_words=2000,mask=back_picture,max_font_size=200,random_state=42)wc2 = wc.fit_words(word_count)# 3、绘制词云图plt.figure(figsize=(16, 8))plt.imshow(wc2)plt.axis("off")plt.show()wc.to_file("手机参数信息词云图.png")# 可视化4:不同价格区间手机饼图
# 分析:哪类价格区间的手机型号最多,推测出消费者最能接受的价格区间
def huatu4(data):plt.figure(figsize=(10, 5), dpi=200)x = data['level']y = data.groupby('level').count().reset_indexplt.hist(x,bins=12, color='green', align='mid')plt.title('在售手机价格区间统计')plt.xlabel('价格区间')plt.ylabel('手机型号数')plt.savefig('在售手机价格区间统计')plt.show()# 数据去重
def quchong():# 去重之前的记录数print("去重之前的记录数", data.shape)# 去重“详细信息”相同的记录,删除后出现的重复的值:data.drop_duplicates(subset=["desc"], inplace=True)# 去重之后的记录数print("去重之后的记录数", data.shape)# 销量数据清洗,将数据清洗为int类型(1万+相应进行清洗)
def xiaoliang(x):# find()方法检测字符串中是否包含子字符串”万“,不包含在指定范围内则返回-1# print(type(x))if x.find("万") != -1:x = x[0]return int(x) * 10000elif x.find("+") != -1:x = list(x)x.remove('+')x = ''.join(x)return int(x)else:return int(x)# 清洗出价格少于五百的耳机钢化膜等(假设小于五百的都是非法数据)
def data_jiage():# 如果price列的值<500d = data[data['price'] < 500]data1 = data.drop(d.index)# print(data1[data1['price'] < 500])return data1# 清洗出销量排行前五的信息,方便为后面可视化图提供数据
def data_cleansing(data):# 按照特定列的值进行排序sort_data = data.sort_values('buynum', ascending=True)# 获取前五条数据data_ten = sort_data.tail(5)# 输出每一条参数信息,设置手机型号data_ten["desc"] = data_ten["desc"].apply(set_xinghao)# data_ten.to_csv('销量前五.csv')return data_tendef set_xinghao(x):# 打印型号,设置型号print(x)x = input("型号为:")return x# 参数信息清洗,使用jieba库做词频统计,方便后面做词云图的数据
def canshu(data):# 将商品信息进行切分data["desc_cut"] = data["desc"].apply(lambda x: jieba.lcut(x))# 定义一个字符串,含有需要切割的字符,以逗号分隔stop = "手机,&,【,】,?,/,+"# 以逗号切分stop = stop.split(',')# 将包含在stop的字符切割data["desc_cut"] = data["desc_cut"].apply(lambda x: [i for i in x if i not in stop])# 存取词频数据all_words = []for i in data["desc_cut"]:for j in i:all_words.extend(i)word_count = pd.Series(all_words).value_counts()return word_count# 1000元为一个等级,呈现分区分布;于是创建价格等级字段,以便后续进行分析;
def get_price_level(p):level=p//1000if level==0:return '0~999'if level==1:return '1000~1999'if level==2:return '1999~2999'if level==3:return '2999~3999'if level==4:return '3999~4999'if level>=5:return '5000+'else:return '计算出错'def main():# 1、数据清洗# 数据去重quchong()# 销量数据清洗# data["buynum"] = data["buynum"].apply(xiaoliang)# 更改价格数据格式为float:data['price'].astype('float')# 删除非法价格(假设小于500为非法数据)data1 = data_jiage()# 增加价格区间数据data1['level'] = data1['price'].apply(get_price_level)# 获取销量前五数据data_ten = data_cleansing(data1)# 清洗出desc信息里的各种参数信息,获取参数词频数据word_count = canshu(data1)# 2、可视化huatu1(data_ten)huatu2(data_ten)huatu3(word_count)huatu4(data1)# 输出清洗后的数据data1.to_csv('2.csv')if __name__ == '__main__':main()

可视化展示图片:

销量前5名手机价格折线图

销量前5名手机型号折线图

在售手机价格区间统计

手机参数信息词云图

爬取淘宝手机数据,并进行清洗,并可视化展示相关推荐

  1. python词云代码手机_【云计算】爬取淘宝手机品牌词云分析(python)

    本文主要向大家介绍了[云计算]爬取淘宝手机品牌词云分析(python),通过具体的内容向大家展现,希望对大家学习云计算有所帮助. 淘宝手机信息的爬取,请看这边博客(点击这里),然后我们利用其中保存的文 ...

  2. python爬淘宝app数据_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 准备Pycharm,下载安装等,可以参考这篇文章 ...

  3. 使用Appium爬取淘宝App数据

    0x01.介绍说明 1.简介 Appium是一个自动化测试开源工具.通过WebDriver协议驱动IOS.Android.Windows Phone平台上的原生应用.混合应用和web应用. 2.App ...

  4. python爬取淘宝手机信息并下载到excel文件中

    #coding=GBK import requests import re from xlwt import Workbook import xlrd import time def key_name ...

  5. selenium爬取淘宝店铺数据

    这里爬取的是某宝店铺的商品,获取的是框框里面的信息(百丽的信息) 价格 累计评价 销量 活动 名称 连接 运行方式: 1.会自动弹出一个浏览器,打开淘宝 2.然后会弹出一个登入界面(手机扫描登入),输 ...

  6. python爬虫数据分析项目 双十一_Python爬取淘宝商品数据,价值千元的爬虫外包项目!...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 完整代码可以点击下方链 ...

  7. Python爬取淘宝商品数据,价值千元的爬虫外包项目

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 完整代码可以点击下方链 ...

  8. 如何写一个python程序浏览淘宝_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)...

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 1. 准备Pycharm,下载安装等,可以参考这 ...

  9. 使用selenium爬取淘宝商品数据,搜索关键词分类(反爬很难?)

    环境准备 博主python为3.8,应该3.x的都没问题下载selenium: pip install selenium 也可以使用清华镜像下载 pip install -i https://pypi ...

最新文章

  1. mybatis 构造查询和联合子查询问题
  2. shell 调用 sqlplus 各种情况示例
  3. POJ 3280 Cheapest Palindrome
  4. python opencv调用cuda_Win10使用VS2019从源码编译OpenCV 4.4 + CUDA 11.0 + Cudnn 8.0 + python3
  5. [摘录]第2章 中场谈判技巧
  6. 时间序列预测入门必读的4篇论文
  7. 全网首发:成功在loongarch64上编译成功jogamp(提供下载库)
  8. reactJS -- 14 Router 概念
  9. 【密码学基础】05 有限域
  10. Java 编码规范8(编程规约-注释规约与其它)
  11. 计算机绘图第二章,机械制图电子教桉-02第二章+计算机绘图..ppt
  12. win10访问不了win7文件服务器,win10和win7共享文件教程 win10和win7共享文件无法访问...
  13. html5背景好看颜色渐变css样式,CSS3制作渐变背景
  14. 读了两年“游戏学院”才知被忽悠
  15. css绝对定位之对齐居中版心内容
  16. 修道士和野人java_修道士和野人问题
  17. 《大数据技术与应用》课程记录
  18. Unity 科技透视模式效果
  19. 中国古代数学在几何学领域的独特贡献
  20. Symantec Endpoint Protection 中如何设置白名单

热门文章

  1. BIEE-2、RPD
  2. 2015年(安卓)手机环境分析报告
  3. Crowd自定义插件启动的主要流程
  4. StarRocks X Flink CDC,打造端到端实时链路
  5. android 屏幕录制代码,Android 录制屏幕的实现方法
  6. 为何场效应管要用UGD与UGS(off)来比较判断夹断情况?
  7. c#服务器上的文件怎么打印,C# 如何調用客戶端打印機打印服務器上的word文件
  8. 天猫主图和视频采集步骤及文件保存方法
  9. python的整数取反_整数取反 - yunduoyun - 博客园
  10. php中session_id()函数详细介绍,会话id生成过程及session id长度