Python爬取汽车之家二手车数据并作可视化

2023-11-08 17:28

本文主要是介绍Python爬取汽车之家二手车数据并作可视化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码

课程亮点:

1、系统分析目标网页

2、html标签数据解析方法

3、海量数据一键保存

获取二手车数据

环境介绍:
  • python 3.8

  • pycharm 2022.3专业版

  • requests >>> pip install requests

  • parsel >>> pip install parsel

案例实现流程:

一. 思路分析

  1. 需要抓取什么数据

  2. 大概的流程和步骤

  3. 确定数据来源
    https://www.che168.com/china/list/

  4. 访问到 该地址

  5. 从访问之后的信息中 我们要取出 对应需要的数据字段

  6. 进行保存操作

  7. 分析翻页的规律

二. 代码实现

发送请求

提取数据

保存数据

代码展示
'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
import requests     # pip install requests
import parsel       # pip install parsel
import csvwith open('汽车之家.csv', mode='w', newline='', encoding='utf-8') as f:csv.writer(f).writerow(['card_name', 'cards_unit', 'price', 'original_price', 'href_url', 'img_url'])
headers = {'cookie': 'fvlid=1678707796259lUxyb5ctia8Y; sessionid=88abf095-f918-4e12-9837-cf8e61024732; area=430112; che_sessionid=1476DA7D-0E1A-4DB6-A0E5-94074A95603C%7C%7C2023-03-13+19%3A43%3A16.765%7C%7C0; listuserarea=0; sessionip=175.13.226.104; Hm_lvt_d381ec2f88158113b9b76f14c497ed48=1699272164; UsedCarBrowseHistory=0%3A49368425; userarea=0; sessionvisit=80b96168-6a79-46b4-b8a5-64adbde2fdda; sessionvisitInfo=88abf095-f918-4e12-9837-cf8e61024732|www.che168.com|102179; che_sessionvid=BE7B0EF0-7E60-4A60-9FBE-5CE182AA0FD2; ahpvno=8; Hm_lpvt_d381ec2f88158113b9b76f14c497ed48=1699276565; ahuuid=1993BFC6-651A-471B-A2F0-549B12314CE8; showNum=56; v_no=59; visit_info_ad=1476DA7D-0E1A-4DB6-A0E5-94074A95603C||BE7B0EF0-7E60-4A60-9FBE-5CE182AA0FD2||-1||-1||59; che_ref=0%7C0%7C0%7C0%7C2023-11-06+21%3A16%3A04.741%7C2023-03-13+19%3A43%3A16.765; sessionuid=88abf095-f918-4e12-9837-cf8e61024732','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
for page in range(100):url = f'https://www.che168.com/china/a0_0msdgscncgpi1ltocsp{page}exx0/?pvareaid=102179#currengpostion'# 1. 发送请求response = requests.get(url, headers=headers)# 2. 提取数据html_data = response.text# JSON格式的数据 -> 结构化数据 (根据层级关系取值) 字典取值 列表取值# 网页源代码 -> 非结构化数据# 所有的车辆信息 全部都在 li里面# 那我是不是可以先将 所有的 li 提取到# //ul[@class="viewlist_ul"]/liselect = parsel.Selector(html_data)# 拿到所有的lilis = select.xpath('//ul[@class="viewlist_ul"]/li')for li in lis:card_name = li.xpath('string(.//h4[@class="card-name"])').get()cards_unit = li.xpath('string(.//p[@class="cards-unit"])').get()price = li.xpath('string(.//span[@class="pirce"])').get()original_price = li.xpath('string(.//s)').get()href_url = li.xpath('.//a[@class="carinfo"]/@href').get()img_url = li.xpath('.//img/@src').get()print(card_name, cards_unit, price, original_price, href_url, img_url)# 多页采集 保存数据with open('汽车之家.csv', mode='a', newline='', encoding='utf-8') as f:csv.writer(f).writerow([card_name, cards_unit, price, original_price, href_url, img_url])

数据可视化

1. 导入模块
'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
import pandas as pd
from pyecharts.charts import *
from pyecharts.commons.utils import JsCode
from pyecharts import options as opts
2. Pandas数据处理

2.1 读取数据

df = pd.read_csv('汽车之家.csv', encoding = 'utf-8')
df.head()

2.2 查看表格数据描述

df.describe()

df.isnull().sum()

df.dropna(axis=0, how='any', inplace=True)
3 Pyecharts可视化

3.1 各省市二手车数量柱状图

counts = df.groupby('城市')['品牌'].count().sort_values(ascending=False).head(20)
'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
bar=(Bar(init_opts=opts.InitOpts(height='500px',width='1000px',theme='dark')).add_xaxis(counts.index.tolist()).add_yaxis('城市二手车数量',counts.values.tolist(),label_opts=opts.LabelOpts(is_show=True,position='top'),itemstyle_opts=opts.ItemStyleOpts(color=JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1,[{offset: 0,color: 'rgb(255,99,71)'}, {offset: 1,color: 'rgb(32,178,170)'}])"""))).set_global_opts(title_opts=opts.TitleOpts(title='各个城市二手车数量柱状图'),xaxis_opts=opts.AxisOpts(name='书籍名称',type_='category',                                           axislabel_opts=opts.LabelOpts(rotate=90),),yaxis_opts=opts.AxisOpts(name='数量',min_=0,max_=500.0,splitline_opts=opts.SplitLineOpts(is_show=True,linestyle_opts=opts.LineStyleOpts(type_='dash'))),tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross')).set_series_opts(markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_='average',name='均值'),opts.MarkLineItem(type_='max',name='最大值'),opts.MarkLineItem(type_='min',name='最小值'),]))
)
bar.render_notebook()

3.3 二手车品牌占比情况

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
dcd_pinpai = df['品牌'].apply(lambda x:x.split(' ')[0])
df['品牌'] = dcd_pinpai
pinpai = df['品牌'].value_counts()
pinpai = pinpai[:5]
datas_pair_1 = [[i, int(j)] for i, j in zip(pinpai.index, pinpai.values)]
datas_pair_1
pie1 = (Pie(init_opts=opts.InitOpts(theme='dark',width='1000px',height='600px')).add('', datas_pair_1, radius=['35%', '60%']).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%")).set_global_opts(title_opts=opts.TitleOpts(title="汽车之家二手车\n\n数量占比区间", pos_left='center', pos_top='center',title_textstyle_opts=opts.TextStyleOpts(color='#F0F8FF',font_size=20,font_weight='bold'),))
)
pie1.render_notebook() 

尾语

好了,今天的分享就差不多到这里了!

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇 更多源码、资料、素材、解答、交流 皆点击下方名片获取呀👇👇👇

这篇关于Python爬取汽车之家二手车数据并作可视化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/371371

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型: