『网络爬虫』买车比价,自动采集某车之家各车型裸车价
公众号:可以叫我才哥
大家好,我是启航。
应朋友要求,帮忙采集某车之家的一些汽车品牌的销售数据,包含购车时间、车型、经销商、裸车价等一类信息。
今天我们就简单演示一下采集过程,大家可以根据自己的兴趣进行拓展,比如采集自己喜欢的品牌汽车数据进行统计分析等等。
进入正文:
1. 目标网页分析
目标网站是某车之家关于品牌汽车车型的口碑模块相关数据,比如我们演示的案例奥迪Q5L
的口碑页面如下:
https://k.autohome.com.cn/4851/#pvareaid=3311678
为了演示方式,大家可以直接打开上面这个网址,然后拖到全部口碑位置,找到我们本次采集需要的字段如下图所示:
采集字段
我们进行翻页发现,浏览器网址发生了变化,大家可以对下如下几页的网址找出规律:
https://k.autohome.com.cn/4851/index_2.html#dataList
https://k.autohome.com.cn/4851/index_3.html#dataList
https://k.autohome.com.cn/4851/index_4.html#dataList
对于上面写网址,我们发现可变部分是车型(如4851
)以及页码(如2
,3
,4
),于是我们可以构建url
参数如下:
# typeid是车型,page是页码
url = f'https://k.autohome.com.cn/{typeid}/index_{page}.html#dataList'
2. 数据请求
通过简单的测试,发现似乎不存在反爬,那就简单了。
我们先引入需要用到的库:
import requests
import pandas as pd
import html
from lxml import etree
import re
然后创建一个数据请求的函数备用:
# 获取网页数据(传递参数 车型typeid和页码数)
def get_html(typeid,page):# 组合出请求地址url = f'https://k.autohome.com.cn/{typeid}/index_{page}.html#dataList'# 请求数据(因为没有反爬,这里没有设置请求头和其他参数)r = requests.get(url)# 请求的网页数据中有网页特殊字符,通过以下方法进行解析r = html.unescape(r.text)# 返回网页数据return r
请求来的数据就是网页html
文本,我们接下来采用re
解析出一共多少页码,再用xpath
进行采集字段的解析。
3. 数据解析
由于需要进行翻页,这里我们可以先通过re正则表达式获取总页码。通过查看网页数据,我们发现总页码可以通过如下方式获取:
try:pages = int(re.findall(r'共(\d+)页',r)[0])
# 如果请求不到页数,则表示该车型下没有口碑数据
except :print(f'{name} 没有数据!')continue
总页码采集
关于待采集字段信息,我们发现都在节点div[@class="mouthcon-cont-left"]
里,可以先定位这个节点数据,然后再进行逐一解析。
待采集字段信息所在节点
此外,我们发现每一页最多15个车型口碑数据,因此我们每页可以定位15个待采集信息数据集,遍历采集代码:
divs = r_html.xpath('.//div[@class="mouthcon-cont-left"]')
# 遍历每个全部的车辆销售信息
for div in divs:# 找到车辆销售信息所在的地方mt = div.xpath('./div[@class="choose-con mt-10"]')[0]# 找到所需字段infos = mt.xpath('./dl[@class="choose-dl"]')# 设置空的字典,用于存储单个车辆信息item = {}# 遍历车辆信息字段for info in infos:key = info.xpath('.//dt/text()')[0]# 当字段为购买车型时,进行拆分为车型和配置if key == '购买车型':item[key] = info.xpath('.//dd/a/text()')[0]item['购买配置'] = info.xpath('.//span[@class="font-arial"]/text()')[0]# 当字段为购车经销商时,需要获取经销商的id参数,再调用api获取其真实经销商信息(这里有坑)elif key == '购车经销商':# 经销商id参数经销商id = info.xpath('.//dd/a/@data-val')[0] +','+ info.xpath('.//dd/a/@data-evalid')[0]# 组合经销商信息请求地址jxs_url = base_jxs_url+经销商id+'|'# 请求数据(为json格式)data = requests.get(jxs_url)j = data.json()# 获取经销商名称item[key] = j['result']['List'][0]['CompanySimple']else:# 其他字段时,替换转义字符和空格等为空item[key] = info.xpath('.//dd/text()')[0].replace("\r\n","").replace(' ','').replace('\xa0','')
4. 数据存储
由于没啥反爬,这里直接将采集到的数据转化为pandas.DataFrame
类型,然后存储为xlsx
文件即可。
df = pd.DataFrame(items)
df = df[['购买车型', '购买配置', '购买地点', '购车经销商', '购买时间', '裸车购买价']]
# 数据存储在本地
df.to_excel(r'车辆销售信息.xlsx',index=None,sheet_name='data')
5. 采集结果预览
整个爬虫过程比较简单,采集下来的数据也比较规范,以本文案例奥迪Q5L示例如下:
采集结果预览
以上就是本次全部内容,比较简单,感兴趣的同学可以基于此采集一些感兴趣的数据试着做做统计分析、可视化展示之类的。
文章到这里就结束了,感谢你的观看
说实在的,每次在后台看到一些读者的回应都觉得很欣慰,我想把我收藏的一些编程干货贡献给大家,回馈每一个读者,希望能帮到你们。
干货主要有:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python所有知识点汇总(可以弄清楚Python的所有方向和技术)
*如果你用得到的话可以直接拿走,在我的QQ技术交流群里,可以自助拿走,群号是857113825。*
『网络爬虫』买车比价,自动采集某车之家各车型裸车价相关推荐
- 『python爬虫』26. selenium与超级鹰处理复杂验证码的处理(保姆级图文)
目录 1. 图片选择类验证码 2. 滑块验证码 3. 滑块出错,不加载 总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 1. 图片选择类验证码 ...
- 『python爬虫』16. 多线程与多进程(保姆级图文)
目录 多线程 1. 什么是多线程? 2. 串行模式 3. 多线程 3.1 多线程方法写法 3.2 多线程方法带参数 3.3 多线程类写法 多进程 1. 什么是多进程 欢迎关注 『python爬虫』 专 ...
- 网络爬虫(动态网页爬取关于混合动力汽车的论文数据)
一.实验目的 (1) 熟悉网页浏览器开发工具的使用: (2) 掌握动态网页加载过程: (3) 掌握 post 请求参数设置: (4) 掌握基本的反反爬技术: (5) 能够根据问题需求,指定网络爬虫方案 ...
- python3实例车代码_python3 爬取汽车之家所有车型数据操作步骤(更新版)
题记: 互联网上关于使用python3去爬取汽车之家的汽车数据(主要是汽车基本参数,配置参数,颜色参数,内饰参数)的教程已经非常多了,但大体的方案分两种: 1.解析出汽车之家某个车型的网页,然后正则表 ...
- 『Python爬虫』抓包工具 Fiddler 入门教程
如今Python爬虫越来越火,有想学好Python爬虫的小伙伴可以前往gzh[Python编程学习圈]领取系统的学习资料以及教程视频,还分享有大量的技术干货文章可以阅读学习,欢迎大家关注学习. 传统的 ...
- 『网络迷踪』ctfshow-国足加油
题目 ctfshow推出了网络迷踪题,发现一道有意思的题--国足加油 动图是某比赛的进球画面 这对于球迷不难啊,不请自来,还记得那场比赛主场赢了,2-0,另外一个进球来自全村的希望,非常简单. 本篇文 ...
- 『网络迷踪』ctfshow-网络迷踪(部分)
文章目录 前言 搜图引擎 通过投影定位工具 新手上路 初学乍练 解法一 解法二 初学又练 初学再练 [未解出]现拉现吃 初窥门径 狗哥去哪 国足加油 解法一 解法二 解法三 致我超吧 山外有山 密集恐 ...
- 精通Python网络爬虫:核心技术、框架与项目实战.1.1 初识网络爬虫
摘要 网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理.在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高.此时,我们 ...
- 001:网络爬虫基础理论整合
本篇文章整合了网络爬虫的基础知识,文章内容简明易懂.适合用来复习爬虫知识或者初识爬虫的人. 下面步入正题: 网络爬虫又被称为网络机器人,可以代替人们自动的在互联网中进行数据信息的采集与整理.在大数据时 ...
最新文章
- webpack自动打包功能配置
- 15.4.3 用于Generator的泛型方法
- LiveVideoStack线上分享第四季(一):沉浸式音频技术的采集,传输,播放,以及应用场景初探...
- IO虚拟化——Intel VT-d原理
- 你留言,我送书!20本《玩转Python轻松过二级》等你拿!
- C# A potentially dangerous 问题解决
- Linux - CentOS基础
- html中位div添加水平线,html中div使用CSS实现水平/垂直居中的多种方式
- postgresql mysql数据类型_PostgreSQL和mysql数据类型对比兼容
- showModalDialog和showModelessDialog使用心得*转*
- IM开发通信协议基础知识(一)---TCP、UDP、HTTP、SOCKET
- Hi3519内核配置uart串口
- Guake安装配置:下拉式Gnome桌面终端
- PTA甲级 1114 Family Property (25 point(s))
- 计算机常温环境,计算机CPU温度70度正常吗?电脑cpu常温简介
- 了解ZigBee以及硬件环境
- pyplot画图技巧
- 博客营销与软文营销那些事儿
- 添加底图&切换底图——参考ArcGIS API
- 什么的发明使研制着能够成功研制微型计算机,1_1_科普知识竞赛试题(小学)