公众号:可以叫我才哥

大家好,我是启航。

应朋友要求,帮忙采集某车之家的一些汽车品牌的销售数据,包含购车时间车型经销商裸车价等一类信息。

今天我们就简单演示一下采集过程,大家可以根据自己的兴趣进行拓展,比如采集自己喜欢的品牌汽车数据进行统计分析等等。

进入正文:

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。*

『网络爬虫』买车比价,自动采集某车之家各车型裸车价相关推荐

  1. 『python爬虫』26. selenium与超级鹰处理复杂验证码的处理(保姆级图文)

    目录 1. 图片选择类验证码 2. 滑块验证码 3. 滑块出错,不加载 总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 1. 图片选择类验证码 ...

  2. 『python爬虫』16. 多线程与多进程(保姆级图文)

    目录 多线程 1. 什么是多线程? 2. 串行模式 3. 多线程 3.1 多线程方法写法 3.2 多线程方法带参数 3.3 多线程类写法 多进程 1. 什么是多进程 欢迎关注 『python爬虫』 专 ...

  3. 网络爬虫(动态网页爬取关于混合动力汽车的论文数据)

    一.实验目的 (1) 熟悉网页浏览器开发工具的使用: (2) 掌握动态网页加载过程: (3) 掌握 post 请求参数设置: (4) 掌握基本的反反爬技术: (5) 能够根据问题需求,指定网络爬虫方案 ...

  4. python3实例车代码_python3 爬取汽车之家所有车型数据操作步骤(更新版)

    题记: 互联网上关于使用python3去爬取汽车之家的汽车数据(主要是汽车基本参数,配置参数,颜色参数,内饰参数)的教程已经非常多了,但大体的方案分两种: 1.解析出汽车之家某个车型的网页,然后正则表 ...

  5. 『Python爬虫』抓包工具 Fiddler 入门教程

    如今Python爬虫越来越火,有想学好Python爬虫的小伙伴可以前往gzh[Python编程学习圈]领取系统的学习资料以及教程视频,还分享有大量的技术干货文章可以阅读学习,欢迎大家关注学习. 传统的 ...

  6. 『网络迷踪』ctfshow-国足加油

    题目 ctfshow推出了网络迷踪题,发现一道有意思的题--国足加油 动图是某比赛的进球画面 这对于球迷不难啊,不请自来,还记得那场比赛主场赢了,2-0,另外一个进球来自全村的希望,非常简单. 本篇文 ...

  7. 『网络迷踪』ctfshow-网络迷踪(部分)

    文章目录 前言 搜图引擎 通过投影定位工具 新手上路 初学乍练 解法一 解法二 初学又练 初学再练 [未解出]现拉现吃 初窥门径 狗哥去哪 国足加油 解法一 解法二 解法三 致我超吧 山外有山 密集恐 ...

  8. 精通Python网络爬虫:核心技术、框架与项目实战.1.1 初识网络爬虫

    摘要 网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理.在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高.此时,我们 ...

  9. 001:网络爬虫基础理论整合

    本篇文章整合了网络爬虫的基础知识,文章内容简明易懂.适合用来复习爬虫知识或者初识爬虫的人. 下面步入正题: 网络爬虫又被称为网络机器人,可以代替人们自动的在互联网中进行数据信息的采集与整理.在大数据时 ...

最新文章

  1. webpack自动打包功能配置
  2. 15.4.3 用于Generator的泛型方法
  3. LiveVideoStack线上分享第四季(一):沉浸式音频技术的采集,传输,播放,以及应用场景初探...
  4. IO虚拟化——Intel VT-d原理
  5. 你留言,我送书!20本《玩转Python轻松过二级》等你拿!
  6. C# A potentially dangerous 问题解决
  7. Linux - CentOS基础
  8. html中位div添加水平线,html中div使用CSS实现水平/垂直居中的多种方式
  9. postgresql mysql数据类型_PostgreSQL和mysql数据类型对比兼容
  10. showModalDialog和showModelessDialog使用心得*转*
  11. IM开发通信协议基础知识(一)---TCP、UDP、HTTP、SOCKET
  12. Hi3519内核配置uart串口
  13. Guake安装配置:下拉式Gnome桌面终端
  14. PTA甲级 1114 Family Property (25 point(s))
  15. 计算机常温环境,计算机CPU温度70度正常吗?电脑cpu常温简介
  16. 了解ZigBee以及硬件环境
  17. pyplot画图技巧
  18. 博客营销与软文营销那些事儿
  19. 添加底图&切换底图——参考ArcGIS API
  20. 什么的发明使研制着能够成功研制微型计算机,1_1_科普知识竞赛试题(小学)

热门文章

  1. 思维导图之规范与重构
  2. 虚拟机联网(MacOS)
  3. 【zxshuba散文】 我们要让生命更美丽
  4. 更新:描述性统计和相关性:EAP.portfolio_anaysis.Univariate
  5. Texstudio下载
  6. 错误信息服务器意外关闭了连接,PG ::错误服务器意外关闭了连接
  7. 四大组件 — Activity启动模式
  8. 地狱修炼之路—Python远控领域!
  9. 中国无车承运人行业需求前景与投资战略研究报告2022-2027年
  10. word2010中怎么在第三页起插入页码