分享好友 最新动态首页 最新动态分类 切换频道
二手汽车爬虫的三种实现方式
2024-12-26 10:22

页面的数据是后端通过接口的形式传给前端直接去抓后端数据包发送请求并解析响应。

2.1页面分析

【昆明二手车】昆明二手车交易市场_昆明二手车报价_昆明二手车市场-昆明瓜子二手车 (guazi.com)

进入该页面,暂时称为列表页(汽车信息条数多,每一条汽车信息较少

点击每一个红框,进入对应该车的详情页面 

可以看到详情页里面汽车信息很多,满足要求,红框框住的clueid为每辆车对应的标识(就像每个人对应每一个身份证一样,因此,要从标题页进入详情页,就要找到每一辆汽车的clueid。

寻找方式一般为:右键——>检查——>网络——>Fetch/XHR——>刷新网页——>观察数据包响应

找到响应数据量较大的去寻找clueid,这里我找到之后截图如下

 可以发现和上图所示详情页的clueid一样。并且这个数据包响应是列表形式,这个列表中就会有这个网页对应的20辆车的clueid。

下一步是对详情页提取需要的信息,还是抓取数据包,步骤如上(从右键检查到观察数据包响应)截图如下

 还是列表包着每一辆车的参数信息,因此只要观察这个接口的url和参数,发送请求,解析响应。

2.2代码

 

先导入库,创建二维表。

 

第一个大循环1到50控制的是标题页面数量

如上所示的1到50。headers的设置用来模拟浏览器(这里是随机模拟的,防止反扒,保存信息以及设置响应编码等。

对每个标题页面请求后,对其响应设置json格式,然后一层一层循序渐进找到需要的clueid(在这里我还保存了车名,找到clueid又拼接成正确的详情页url,对详情页发送请求,并把响应同样设置为json格式。

最后就在循环中解析json中我们需要的数据,保存在DataFrame,n表示控制行数,循环结束执行+1操作

值得注意的是

1.if else条件分支语句是根据响应数据本身的特征来写,目的是精准定位我们所需要的数据。

2.try except异常捕获语句是爬取过程中,有的车辆没有质保信息,抛出空异常。

3.代码中第一个for循环是拼接不同标题页面的url,第二个for循环是拼接详情页的url,第三个for循环是定位数据用的。

最后在循环体外导出为表格。

 

抓包方式找不到的情况下,数据是通过html、css、javascript写在了网页上,此时就需要去网页定位数据通过html的标签关系以及css的选择方式抓取数据

2.1页面分析

全国二手车_二手车之家 (autohome.com.cn)

右键——>检查——>元素——元素最左边的框框——>去网页框数据——>查看对应的html、css代码

 很明显,根据前端经验,这里的每一辆车对应一个盒子,对应右边的一个ul儿子li标签

 因此,对该网页发送请求,定位到每一个li标签,从li标签里面解析出车名、年份、里程、价格。

2.2代码

 

代码导入request、BeautifulSoup、pandas库,设置headers,创建data表。

第一个循环控制的是网页的翻页,从第一页到第四十页,拼接url字符串实现的 

对每一个url发送请求,.text设置响应为文本格式并利用它实例化一个BeautifulSoup对象。

 

这句代码定位到所有的li标签。

在下面一个for循环就是对每一个li标签的循环。每一个li标签解析出相应的内容。

值得注意的是

1.查找元素可以利用语法find(“标签”,class_ = “类名”),class是python关键字,因此用class_。

2.find方法返回的是元素本身,find_all方法返回的是元素列表,比如

 
 

 find_all此处返回的列表装有公里和年份,列表取[0]代表公里,取[1]代表年份。

3.代码中的try——except语句是由于有的li标签不存在汽车信息,如果名称没有解析到执行continue关键字跳过这个元素,执行下一个元素的解析。

最后导出为表格。

 

抓包方式找不到的情况下,数据是通过html、css、javascript写在了网页上,不仅仅可以通过beautifulsoup定位,还能利用selenium控制浏览器并且自动定位提取。

2.1页面分析

同上一小节

2.2代码

 

导入所需要的库之后创建一个谷歌浏览器对象,创建表格。

循环控制翻页,书写正确的url,调用get方法自动请求网页,输出网页标题。

然后查找元素,利用xpath方法此处的xpath可以直接在浏览器右键复制。

第二个循环同样是对一个网页内的不同车辆信息的循环。在循环中利用刚刚定位的li标签列表为父元素,继续寻找子元素标题、公里、年份、价格等。

值得注意的是

1.此处selenium控制谷歌浏览器,需要给谷歌浏览器安装驱动才能被代码自动控制。

2.在selenium解析html时候,浏览器的xpath路径是可以直接复制使用的,尔使用lxml的etree树解析的时候,是不能直接右键复制xpath的,大概率定位不到元素。

3.列表切片是为了让数据更好看,解析出来不加切片,就是  公里: 3.5万公里。加了切片直接是3.5公里,年份也是这样一个效果。

 

4.xpath的寻找元素方式是以标签为节点的树。 

最后导出为表格

 

菜鸡一枚,仅仅记录与分享。欢迎大佬多多指正,也欢迎交流。

最新文章
香港2024精准资料|标题释义解释落实
香港2024精准资料释义解释落实随着时代的发展,香港作为一个国际大都市,其在各个领域的发展备受关注,本文将围绕香港2024精准资料这一主题展开讨论,对相关资料进行释义解释,并探讨如何落实相关措施,以促进香港的持续发展。香港2024精准
网站推广攻略,全方位步骤助力企业腾飞
随着互联网的飞速发展,已成为企业展示形象、拓展业务的重要平台。在竞争激烈的市场环境下,如何有效推广网站,知名度,成为企业关注的焦点。本文将为您揭秘网站推广的全方位策略,助力企业实现腾飞。一、关键词优化关键词优化是网站推广的
石碧华:以区域开放布局优化推进高质量发展
优化区域开放布局不仅是推进高水平对外开放的重要举措,也是促进区域协调发展和推动中国式现代化的内在要求。我国推进以共建“一带一路”为重点的全面开放,区域对外开放的主动性明显提高。在国家区域发展战略推动下,我国区域开放水平不断
食品添加剂明胶透射比检测机构
食品添加剂明胶透射比检测是一种常用的质量控制手段,它可以帮助评估明胶产品的质量和安全性。透射比是指在特定波长下,通过样品的光线强度与入射光线强度的比值,它可以反映材料的透明度和纯度。在食品添加剂明胶中,透射比的检测尤为重要
杰和课堂
一、什么是云终端云终端,可以被看作是一台电脑主机,它通过连接显示屏、鼠标、键盘等外设即可使用。与传统主机相比,云终端体积小,还拥有一层独特的“云”属性,这层属性使得云终端在多个方面超越了传统电脑,以更低的成本、更便捷的管理
银行保函是什么
银行保函是一种由银行出具的书面保证文件,用于确保交易中某一方履行其义务。具体来说,银行保函是银行作为保证人,向受益人(通常是合同的一方或第三方)开立的,保证申请人(通常是合同的另一方)未能按双方协议履行责任或义务时,由银行
谷歌推广Google AdWords变得简单:指南五
谷歌推广开始前的一些细节已经说的差不多,下面会开始广告账户实操分享,实打实的干货。 GoogleAds分为几个层级一、广告系列 谷歌Ads广告的第一步。由一组使用相同的预算、地理位置定位和其他设置的广告组(广告、关键字和出价)组成。 1、
网站建站要怎么吸引人?
      在网站建站建设时,没有吸引人的内容,是无法在各个网站当中脱颖而出的。所以,在设计内容上面,有些能吸引人的地方,一定要注意。    第一:导航设计    用户在进入网站后,第一眼看到的就是导航,整个导航上面,不论是横
产品设计的核心思维
本文主要从四个方面讲述核心思维以用户为中心(User-Centered Design, UCD)、平衡商业价值与用户体验、如何避免失衡关注用户体验的底线、数据驱动设计、全局与细节并重、快速迭代。 一、以用户为中心(User-Centered Design, UCD)用户是
高中生雅思7.5分是什么水平
对于很多高中生来说,雅思考试是他们升学的重要里程碑。在雅思考试中获得高分对于他们进入理想大学或者留学的机会至关重要。那么,高中生雅思7.5分是什么等级呢?下面我将从不同方面为大家解答。雅思考试总分为9分,分为听力、阅读、写作和
相关文章
推荐文章
发表评论
0评