一、写在前面兄弟们,你们的热情让我都不敢断更了,冲!

文章插图
爬妹子什么的,虽然大家都很喜欢,但是也不能经常去爬对吧,身体重要,当然如果你们有什么好的网站,都可以推荐下,下次我爬完了给你们分享~

文章插图
网友:其实就是你自己想看吧

文章插图
二、准备工作1、知识点
- requests发送网络请求
- parsel解析数据
- csv保存数据
- 环境版本: python3.8
- 编辑器版本:pycharm2021.2
Python安装/环境配置/pycharm安装/基本操作/快捷键/永久使用都有
3、第三方库
- requests
- parsel
这些是需要安装的第三方库,直接pip安装就好了 。
pip install requestspip install parsel安装慢就使用镜像源安装
实在不会安装模块看我以前的文章:Python安装第三方模块及解决pip下载慢/安装报错
三、大致流程
- 找到 目标网址
https://www.dongchedi.com/usedcar/x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x?sh_city_name=%E5%85%A8%E5%9B%BD&page=1
a 确定我们要采集的目标 年份 品牌…
b 确定数据来源 (静态页面True 和 动态页面) - 发送请求
- 获取数据 html网页源代码
- 解析数据 re css xpath bs4 …
- 保存数据
- 数据分析 简单的数据可视化 推荐功能
工具是不一样的 anaconda(python解释器) 里面的 jupyter notebook

文章插图
2.2 保存的数据这是保存在Excel里面的数据,等下分析就分析这里面保存好的数据 。

文章插图
3、数据分析部分3.1 导入模块import pandas as pdfrom pyecharts.charts import *from pyecharts.commons.utils import JsCodefrom pyecharts import options as optspyecharts 没有的话需要安装一下
3.2 Pandas数据处理3.21 读取数据
df = pd.read_csv('dcd.csv', encoding = 'utf-8')df.head()

文章插图
3.22 查看表格数据描述
df.describe()

文章插图
一共有10000条数据
3.23 查看表格是否有数据缺失
df.isnull().sum()

文章插图
3.3 Pyecharts可视化3.31 Pyecharts可视化
counts = df.groupby('城市')['品牌'].count().sort_values(ascending=False).head(20)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_=1400.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=https://tazarkount.com/read/[opts.MarkLineItem(type_='average',name='均值'),opts.MarkLineItem(type_='max',name='最大值'),opts.MarkLineItem(type_='min',name='最小值'),])))bar.render_notebook()可以看到成都的二手车数量是最多的,远超第二 。

文章插图
3.32 各省市二手车平均价格柱状图
means = df.groupby('城市')['售价(万元)'].mean().astype('int64').head(20)bar=(Bar(init_opts=opts.InitOpts(height='500px',width='1000px',theme='dark')).add_xaxis(means.index.tolist()).add_yaxis('城市二手车平均价格',means.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_=40.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=https://tazarkount.com/read/[opts.MarkLineItem(type_='average',name='均值'),opts.MarkLineItem(type_='max',name='最大值'),opts.MarkLineItem(type_='min',name='最小值'),])))bar.render_notebook()不过价格的话,成都就比较平均,帝都遥遥领先 。

文章插图
3.33 二手车品牌占比情况
dcd_pinpai = df['品牌'].apply(lambda x:x.split(' ')[0])df['品牌'] = dcd_pinpaipinpai = df['品牌'].value_counts()pinpai = pinpai[:5]datas_pair_1 = [[i, int(j)] for i, j in zip(pinpai.index, pinpai.values)]datas_pair_1pie1 = (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() 以宝马奥迪这几款车型来看,二手车品牌占比情况,宝马比奥迪胜出一筹 。

文章插图
2.34 二手车里程区间
def tranform_price(x):if x <= 5.0:return '0~5万公里'elif x <= 10.0:return '5~10万公里'elif x <= 15.0:return '10~15万公里'elif x <= 20.0:return '15~20万公里'else:return '20万公里以上'df['里程分级'] = df['里程(万公里)'].apply(lambda x:tranform_price(x))price_1 = df['里程分级'].value_counts()datas_pair_1 = [(i, int(j)) for i, j in zip(price_1.index, price_1.values)]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() 基本上都是10公里以内的里程,还是非常有搞头的 。看得我都想去冲两台了~

文章插图
3.4 二手车推荐k_list = []the_list = []keyword = input('请输入品牌:')data5 = df.loc[df['品牌'].str.contains(str(keyword))]keyword1 = eval(input('请输入里程(万公里)上限:'))data6 = data5[data5['里程(万公里)'] <= keyword1]city = input('请输入城市:')data7 = data6[data6['城市'] == str(city)]day1 = eval(input('请输入售价(万元)下限:'))day2 = eval(input('请输入售价(万元)上限:'))data8 = data7[(data7['售价(万元)']>=day1)&(data7['售价(万元)']<=day2)]data8哈哈 长沙居然没有奥迪,不给力啊

文章插图
4、数据分析代码运行数据分析代码的话,一般都是ipynb格式的,对于刚学数据分析的兄弟来说,就比较迷茫了,我简单分享下 。
首先打开我们存放代码的文件夹,然后在地址栏输入 jupyter notebook然后按回车 。

文章插图
如果你实在找不到代码存放的位置,右键点击代码打开属性 。

文章插图
比如我是放在C:\Users\Administrator\Desktop
然后打开一个新的文件窗口,把这个地址粘贴进去按回车进入这个位置 。
【python爬虫万能代码 Python爬虫+数据分析:爬一下懂车帝,分析一下现阶段哪款车值得我们去冲】

文章插图
继续前面讲的,我们按回车之后就会弹出这个窗口 。

文章插图
找到你要运行的代码点进去就打开这个代码了

文章插图
运行都是一样的点 run 就好了,运行之前你下载的数据一定要准备好,没数据怎么分析呢,对吧~

文章插图
兄弟们,文章看不会的话,我把视频教程放在评论区置顶了 。
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
