与许多其他交易一样,购买或出售汽车对大多数人来说都是一个重大决定。Carsandbids.com 是一个受欢迎的平台,可让您通过拍卖购买或出售汽车。但是,与大多数电子商务平台一样,在做出选择之前浏览许多网页可能会很困难。

网络抓取是从网站收集数据的一种很好的方法。当您想要分析市场趋势、获取有关车辆的详细信息或查看拍卖结果时,从 Carsandbids.com 等网站抓取数据是一个好主意。

在此博客中,我们将指导您完成使用以下工具抓取 Carsandbids.com 的过程 Crawlbase 的爬行 API 使用 Python。您将学习如何设置环境、了解网站的结构以及有效地提取数据。

目录

  1. 为什么要抓取 Carsandbids.com?
  • 抓取 Carsandbids.com 的好处
  • Carsandbids.com 的关键数据点
  1. 所需的工具和库
  • 设置环境
  • 安装必要的库
  1. 了解 Carsandbids.com 结构
  • 搜索结果页面概述
  • 产品页面概览
  1. 使用 Crawlbase 爬取 API
  • Crawlbase爬取API简介
  • 设置 Crawlbase 抓取 API
  1. 抓取搜索结果页面
  2. 抓取产品页面
  3. 使用 Crawlbase 高效抓取 Carsandbids 数据(最后的想法)
  4. 常见问题

为什么要抓取 Carsandbids.com?

抓取 Carsandbids.com 可以为我们提供大量汽车拍卖数据,我们可以使用这些数据来做各种用途。该网站提供各种汽车拍卖,每辆车都有详细描述,包括规格、拍卖历史和卖家详细信息。

抓取 Carsandbids.com 的好处

对于数据极客和专业人士来说,抓取 Carsandbids.com 的数据有几个好处:

  • 全面的数据收集:每辆汽车的列表中的重要信息,例如其品牌、型号、制造年份、迄今为止行驶的里程、状况和拍卖价格。
  • 实时市场洞察:观察正在进行的拍卖,跟踪出价并观察市场变化。
  • 竞争力分析:调查拍卖结果以了解市场趋势和竞争情况。
  • 加强研究:利用收集的数据深入研究汽车折旧、买家偏好和其他汽车趋势。
  • 自动化监控:关注特定汽车列表及其拍卖结果,无需手动操作。

Carsandbids.com 的关键数据点

抓取 Carsandbids.com 可以让你收集各种详细信息:

carsandbids.com 关键数据点

1、车辆信息:

  • 品牌和型号:识别汽车的制造商和具体型号。
  • :确定汽车的制造年份。
  • 里程:收集汽车行驶里程的数据。
  • Condition:了解汽车的当前状况,包括任何明显的缺陷或问题。
  • 技术规格:获取详细规格,如发动机类型、马力、变速器等。

2. 拍卖详情:

  • 起始价:拍卖的初始价格。
  • 当前出价:任一时刻的最高出价。
  • 投标数量:追踪已提交的投标数量。
  • 拍卖结束时间:了解拍卖何时结束。
  • 拍卖记录:查看过去的拍卖以了解最终的销售价格和竞标历史。

3.卖家信息:

  • 卖家资料:卖家的基本信息。
  • 评分和评论:根据之前的交易了解卖家的信誉。

4. 历史数据:

  • 过往拍卖结果:以前的销售数据,包括最终销售价格和拍卖日期。
  • 竞标模式:分析过去拍卖过程中投标情况。

5. 描述和照片:

  • 车辆描述:卖家提供的详细描述。
  • 图片:从各个角度拍摄的汽车图像,展示其状况和特点。

使用 Crawlbase 的 Crawling API 抓取 Carsandbids.com 可使此过程高效且有效,让您能够无缝收集和分析数据。接下来,我们将讨论抓取 Carsandbids.com 所需的工具和库。

所需的工具和库

为了高效地抓取 Carsandbids.com 的数据,您需要设置环境并安装一些必要的库。以下是具体操作方法。

设置您的环境

  1. 安装Python:确保你的系统中已经安装了 Python。可以从 Python官方网站.
  2. 创建虚拟环境:拥有一个虚拟环境来管理项目依赖项始终是一种很好的做法。转到终端窗口并输入以下命令:
1
2
3
4
5
6
python -m venv carsandbids-scraper

# 在 macOS/Linux 上
资源 carsandbids-scraper/bin/激活
# 在 Windows 上
.\carsandbids-scraper\Scripts\activate
  1. 选择一个IDE:选择用于编写脚本的 IDE 或代码编辑器。常见的选择包括 PyCharm, 视觉工作室代码,崇高的文字.

安装必要的库

设置完成后,我们需要安装必要的库。打开终端窗口并运行以下命令:

1
2
pip 安装请求 beautifulsoup4 json
点安装爬虫库

以下是这些库的简要概述:

  • 要求:一个用于向网站发出请求的简单 HTTP 库。
  • 美丽的汤4:用于解析 HTML 并从网页中提取数据的库。
  • JSON:用于处理 JSON 数据的库。
  • 爬行基地:与 Crawlbase 产品交互以抓取网站的库。

准备好这些包和库后,就可以开始抓取数据了。在以下部分中,我们将探索网站的结构以及如何使用 Crawlbase Crawling API 从中提取数据。

了解 Carsandbids.com 结构

为了能够有效地抓取 Carsandbids.com,您应该了解其网页的结构。在本部分中,我们将介绍搜索结果页面和产品页面的主要组件。

搜索结果页面概述

Carsandbids.com 上的搜索结果页面列出了多场汽车拍卖。

carsandbids.com 搜索结果页面截图

每个列表通常包括:

  • 车辆名称:汽车的品牌和型号。
  • 缩图图片:车辆的小图像。
  • 拍卖细节:当前出价、剩余时间、出价次数等信息。
  • 链接至产品页面:指向每辆车的详细产品页面的 URL。

了解这些元素将帮助您在抓取搜索结果时定位特定的数据点。

产品页面概览

产品页面提供有关特定车辆的详细信息。

carsandbids.com 产品页面的截图。

关键要素包括:

  • 车辆说明:有关汽车品牌、型号、年份、里程、状况和规格的详细信息。
  • 图片廊:多张图像展示车辆的不同方面。
  • 拍卖细节:起拍价、当前出价、出价历史、拍卖结束时间等信息。
  • 卖家信息:有关卖家的详细信息,包括其个人资料和任何评级或评论。
  • 其他详细信息:卖方提供的任何额外信息,包括车辆历史、维护记录和修改。

通过熟悉这些页面的结构,您可以有效地规划您的抓取策略。在下一节中,我们将讨论如何使用 Crawlbase 的抓取 API 从这些页面中提取数据。

使用 Crawlbase 爬取 API

Crawlbase 的爬行 API 是一款强大的工具,可简化网页抓取。后续部分将介绍 API 并指导您设置它以抓取 Carsandbids.com。

Crawlbase爬取API简介

Crawlbase 爬行 API 是其中之一 最好的网络爬虫工具 旨在处理复杂的网页抓取场景,如 Carsandbids.com 动态网页。它提供了一种简化的方法来访问网页内容,同时绕过常见的挑战,如 JavaScript 渲染、CAPTCHA 和反抓取措施。

IP轮换 是 Crawlbase Crawling API 的一个突出功能。通过轮换 IP 地址,它可以确保您的抓取请求来自不同的地方,这使得网站更难检测和阻止抓取工具。

使用 Crawlbase Crawling API,您可以向网站发送请求并获取结构化数据。使用它 参数,您可以负责渲染 JavaScript、处理动态内容并返回已解析的 html 内容。

设置 Crawlbase 抓取 API

  1. 注册并获取 API 令牌:首先,注册一个账户 爬虫库 并获取您的 API 令牌。此密钥对于验证您的请求是必需的。

    备注:Crawlbase 提供两种令牌,即用于静态网站的普通令牌 (TCP) 和用于动态或 JavaScript 驱动网站的 JavaScript 令牌 (JS)。Carsandbids.com 严重依赖 JavaScript 来动态加载其页面,因此我们将使用 JavaScript 令牌。为了顺利启动,对 Crawling API 的前 1,000 个请求是免费的。无需信用卡。

  2. 初始化 API: 进口 CrawlingAPI爬虫库 Python 库并使用您的 API 令牌在 Python 脚本中初始化 Crawlbase Crawling API。这是一个基本示例:

1
2
3
4
 爬行基地 进口 抓取API

# 使用您的访问令牌初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'YOUR_CRAWLBASE_TOKEN' })
  1. 发出请求:创建一个函数来向 Crawlbase API 发出请求。以下是抓取搜索结果页面的示例函数:
1
2
3
4
5
6
7
8
9
DEF make_crawlbase_request(网址):
响应=crawling_api.get(url)

if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
回报 html_内容
其他:
打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}")
回报 不包含

在接下来的部分中,我们将详细介绍如何抓取搜索结果页面和产品页面。

抓取搜索结果页面

抓取 Carsandbids.com 的搜索结果页面需要提取多个汽车列表的详细信息。本节将逐步指导您完成该过程,并提供代码示例。

步骤 1:分析搜索结果页面

在编写任何代码之前,请了解搜索结果页面的结构。

检查 carsandbids.com 的搜索结果页面

确定包含要提取的数据的 HTML 元素,例如车辆标题、缩略图、拍卖详情和产品页面链接。

第 2 步:设置 Python 脚本

创建一个新的 Python 脚本并导入必要的库和函数,以使用 Crawling API 发出请求,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
进口 JSON
爬行基地 进口 抓取API
bs4 进口 美丽汤

# 使用您的访问令牌初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

# 使用 Crawlbase API 发出请求的函数
DEF make_crawlbase_request(网址,选项):
响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
回报 html_内容
其他:
打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}")
回报 不包含

步骤 3:解析并提取数据

使用 BeautifulSoup 解析 HTML 内容并提取相关数据。以下是提取车辆拍卖标题、副标题、位置、缩略图和产品页面链接的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 抓取搜索结果页面的函数
DEF scrape_search_results_page(html_内容):
汤 = BeautifulSoup(html_content, 'html.parser')
car_listings = soup.find_all(‘礼’, 类_=‘拍卖品’)

提取的数据 = []
清单 in 汽车清单:
拍卖标题 = 列表.查找('div', 类_='拍卖标题').text.strip() if 列表.查找('div', 类_='拍卖标题') 其他 不包含
拍卖子标题 = listing.find('p', 类_='拍卖副标题').text.strip() if 列表.查找('p', 类_='拍卖副标题') 其他 不包含
拍卖地点 = listing.find('p', 类_='拍卖-loc').text.strip() if 列表.查找('p', 类_='拍卖-loc') 其他 不包含
缩略图 = 列表.查找('img')['源代码'] if 列表.查找('img') 其他 不包含
产品页面链接 = 'https://www.carsandbids.com' + 列表.查找('一种')['href'] if 列表.查找('一种') 其他 不包含

提取的数据.附加({
'标题':拍卖标题,
'字幕':拍卖子标题,
‘拍卖地点’:拍卖地点,
“缩略图”:缩略图,
‘产品页面链接’:产品页面链接
})
回报 提取的数据

第四步:保存提取的数据

编写一个函数将提取的数据保存到 JSON 文件中以供将来使用:

1
2
3
4
5
# 将数据保存到 JSON 文件的函数
DEF 保存数据为json(数据、文件名):
- 打开(文件名, 'w') as 文件:
json.dump(数据,文件,缩进=2)
打印(f”数据保存至 {文档名称}")

步骤 5:运行脚本

创建一个 main 函数并定义搜索结果页面的 URL、输出文件名,并设置 Crawling API 请求的选项。调用此函数开始抓取 Carsandbids.com SERP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 主功能
DEF ():
搜索结果 URL = 'https://carsandbids.com/search/bmw'
输出文件 = '搜索结果.json'
选项= {
'ajax_等待': '真的',
'页面等待': 10000
}

# 获取搜索结果页面
search_results_html = make_crawlbase_request(SEARCH_RESULTS_URL,选项)

if 搜索结果:
# 抓取搜索结果页面
提取的数据 = scrape_search_results_page(搜索结果html)

# 将提取的数据保存到 JSON 文件中
将数据保存为 JSON(提取的数据,输出文件)
其他:
打印(“没有要解析的数据。”)

if __名字__ == '__主要__':
主()

完整脚本

以下是抓取 Carsandbids.com 搜索结果页面的完整脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
进口 JSON
爬行基地 进口 抓取API
bs4 进口 美丽汤

# 使用您的访问令牌初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

# 使用 Crawlbase API 发出请求的函数
DEF make_crawlbase_request(网址,选项):
响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
回报 html_内容
其他:
打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}")
回报 不包含

# 抓取搜索结果页面的函数
DEF scrape_search_results_page(html_内容):
汤 = BeautifulSoup(html_content, 'html.parser')
car_listings = soup.find_all(‘礼’, 类_=‘拍卖品’)

提取的数据 = []
清单 in 汽车清单:
拍卖标题 = 列表.查找('div', 类_='拍卖标题').text.strip() if 列表.查找('div', 类_='拍卖标题') 其他 不包含
拍卖子标题 = listing.find('p', 类_='拍卖副标题').text.strip() if 列表.查找('p', 类_='拍卖副标题') 其他 不包含
拍卖地点 = listing.find('p', 类_='拍卖-loc').text.strip() if 列表.查找('p', 类_='拍卖-loc') 其他 不包含
缩略图 = 列表.查找('img')['源代码'] if 列表.查找('img') 其他 不包含
产品页面链接 = 'https://www.carsandbids.com' + 列表.查找('一种')['href'] if 列表.查找('一种') 其他 不包含

提取的数据.附加({
'标题':拍卖标题,
'字幕':拍卖子标题,
‘拍卖地点’:拍卖地点,
“缩略图”:缩略图,
‘产品页面链接’:产品页面链接
})
回报 提取的数据

# 将数据保存到 JSON 文件的函数
DEF 保存数据为json(数据、文件名):
- 打开(文件名, 'w') as 文件:
json.dump(数据,文件,缩进=2)
打印(f”数据保存至 {文档名称}")

# 主功能
DEF ():
搜索结果 URL = 'https://carsandbids.com/search/bmw'
输出文件 = '搜索结果.json'
选项= {
'ajax_等待': '真的',
'页面等待': 10000
}

# 获取搜索结果页面
search_results_html = make_crawlbase_request(SEARCH_RESULTS_URL,选项)

if 搜索结果:
# 抓取搜索结果页面
提取的数据 = scrape_search_results_page(搜索结果html)

# 将提取的数据保存到 JSON 文件中
将数据保存为 JSON(提取的数据,输出文件)
其他:
打印(“没有要解析的数据。”)

if __名字__ == '__主要__':
主()

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[
{
“标题”: “2014 款宝马 335i 轿车观察”,
“字幕”: “无备用涡轮增压 6 缸发动机、M 运动套件、加州所有、部分改装”,
“拍卖地点”: “洛杉矶,CA 90068”,
“缩略图”: "https://media.carsandbids.com/cdn-cgi/image/width=768,quality=70/9004500a220bf3a3d455d15ee052cf8c332606f8/photos/rkVPlNqQ-SRn59u8Hl5-(edit).jpg?t=171849884215",
“产品页面链接”: "https://www.carsandbids.com/auctions/9QxJ8nV7/2014-bmw-335i-sedan"
},
{
“标题”: “2009 款宝马 328i 运动旅行车观察”,
“字幕”: “无保留检查 3.0 升 6 缸,高级套装,加州所有”,
“拍卖地点”: “加利福尼亚州圣地亚哥 92120”,
“缩略图”: "https://media.carsandbids.com/cdn-cgi/image/width=768,quality=70/9004500a220bf3a3d455d15ee052cf8c332606f8/photos/3g6kOmG9-2vaWrBd1Zk-(edit).jpg?t=171863907176",
“产品页面链接”: “https://www.carsandbids.com/auctions/30n7Yqaj/2009-bmw-328i-sports-wagon”
},
{
“标题”: “2011 款宝马 M3 轿车竞赛套件观察”,
“字幕”: “无备用 V8 动力,更换连杆轴承,装备精良,配备 M 性能排气”,
“拍卖地点”: “威尔梅特,伊利诺伊州 60091”,
“缩略图”: "https://media.carsandbids.com/cdn-cgi/image/width=768,quality=70/c7387fa5557775cb743f87fc02d6cb831afb20b2/photos/3Bp4zzbX-hgZKuFy-Ka-(edit).jpg?t=171869247233",
“产品页面链接”: “https://www.carsandbids.com/auctions/9lBB4mxM/2011-bmw-m3-sedan-competition-package”
},
{
“标题”: “2001 款宝马 740iWatch”,
“字幕”: “无保留 V8 动力、M 运动套件、东方蓝金属漆”,
“拍卖地点”: “纽约州彭菲尔德 14526”,
“缩略图”: "https://media.carsandbids.com/cdn-cgi/image/width=768,quality=70/4822e9034b0b6b357b3f73fabdfc10e586c36f68/photos/9XY2zVwq-wu-H4HvpOL-(edit).jpg?t=171881586626",
“产品页面链接”: “https://www.carsandbids.com/auctions/9eDymNqk/2001-bmw-740i”
},
.... 更多的
]

在下一节中,我们将详细介绍如何抓取产品页面。

抓取产品页面

抓取 Carsandbids.com 的产品页面需要提取有关单个汽车列表的详细信息。本节将指导您完成该过程,并提供代码示例。

步骤1:分析产品页面

在编写任何代码之前,请检查产品页面的结构。

检查 carsandbids.com 的产品页面。

识别包含要提取的数据的 HTML 元素,例如车辆描述、图片库、拍卖详情和卖家信息。

第 2 步:设置 Python 脚本

创建一个新的 Python 脚本或添加到现有脚本并导入必要的库和函数以使用 Crawling API 发出请求,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
进口 JSON
爬行基地 进口 抓取API
bs4 进口 美丽汤

# 使用您的访问令牌初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

# 使用 Crawlbase API 发出请求的函数
DEF make_crawlbase_request(网址,选项):
响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
回报 html_内容
其他:
打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}")
回报 不包含

步骤 3:解析并提取数据

使用 BeautifulSoup 解析 HTML 内容并提取相关数据。以下是提取车辆描述、图片库和拍卖详情的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 抓取产品页面的函数
DEF scrape_product_page(网址,选项):
product_page_html = make_crawlbase_request(url,选项)
if 产品页面html:
汤 = BeautifulSoup(产品页面html, 'html.parser')

title_price_tag = soup.select_one('div.拍卖标题 > h1')

车辆描述 = {}
quick_facts = soup.find('div', 类_='要闻速览')

if 要闻速览:
dl in quick_facts.find_all(‘dl’):
日期、日数 in 拉链(dl.find_all(‘dt’查找所有数据('dd')):
键 = dt.text.strip()
值 = dd.文本.strip() if dd 其他 不包含
车辆描述[键] = 值

图片库 = {
“室内图片”: [图片['源代码'] IMG in 汤.选择('div[class*="gall-int"] > img')],
“外部图像”: [图片['源代码'] IMG in 汤.选择('div[class*="gall-ext"] > img')]
}

current_bid_tag = soup.select_one(‘div.当前出价 > div.出价值’)
bid_history = [bid.text.strip() 出价 in 汤.选择('.comments dl.placed-bid')]

卖家信息链接 = soup.select_one('ul.stats li.卖家 div.用户名 a')
卖家信息 = {
'用户名':卖家信息链接['标题'] if seller_info_link 其他 不包含,
'轮廓': 'https://carsandbids.com' + 卖家信息链接['href'] if seller_info_link 其他 不包含,
}

产品数据 = {
‘拍卖标题’:标题价格标签.文本.条形码() if 标题价格标签 其他 不包含,
‘车辆描述’:车辆描述,
‘图片库’:图片库,
'当前出价':current_bid_tag.text.strip() if current_bid_tag 其他 不包含,
‘出价历史’:出价历史,
'卖家信息':卖家信息
}

回报 产品数据
其他:
打印(“没有要解析的数据。”)

第四步:保存提取的数据

编写一个函数将提取的数据保存到 JSON 文件以供将来使用:

1
2
3
4
5
6
// 保存json数据的函数
DEF 保存数据为json(json,输出文件):
- 打开(输出文件, 'w') as 文件:
json.dump(json,文件,缩进=2)

打印(f”数据保存至 {输出文件}")

步骤 5:运行脚本

创建一个 main 函数中,您将定义产品页面的 URL、设置 Crawlbase Crawling API 请求的选项、输出文件名,并组合抓取和保存功能。运行 main 抓取 Carsandbids.com 产品页面数据的功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 运行脚本的主要函数
DEF ():
产品页面网址 = 'https://carsandbids.com/auctions/9QxJ8nV7/2014-bmw-335i-sedan'
输出文件 = ‘产品数据.json’
选项= {
'ajax_等待': '真的',
'页面等待': 10000
}

scraped_data = scrape_product_page(PRODUCT_PAGE_URL,选项)
将数据保存为json(抓取的数据,输出文件)

if __名字__ == '__主要__':
主()

完整脚本

以下是抓取 Carsandbids.com 产品页面的完整脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
进口 JSON
爬行基地 进口 抓取API
bs4 进口 美丽汤

# 使用您的访问令牌初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

# 使用 Crawlbase API 发出请求的函数
DEF make_crawlbase_request(网址,选项):
响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
回报 html_内容
其他:
打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}")
回报 不包含

# 抓取产品页面的函数
DEF scrape_product_page(网址,选项):
product_page_html = make_crawlbase_request(url,选项)
if 产品页面html:
汤 = BeautifulSoup(产品页面html, 'html.parser')

title_price_tag = soup.select_one('div.拍卖标题 > h1')

车辆描述 = {}
quick_facts = soup.find('div', 类_='要闻速览')

if 要闻速览:
dl in quick_facts.find_all(‘dl’):
日期、日数 in 拉链(dl.find_all(‘dt’查找所有数据('dd')):
键 = dt.text.strip()
值 = dd.文本.strip() if dd 其他 不包含
车辆描述[键] = 值

图片库 = {
“室内图片”: [图片['源代码'] IMG in 汤.选择('div[class*="gall-int"] > img')],
“外部图像”: [图片['源代码'] IMG in 汤.选择('div[class*="gall-ext"] > img')]
}

current_bid_tag = soup.select_one(‘div.当前出价 > div.出价值’)
bid_history = [bid.text.strip() 出价 in 汤.选择('.comments dl.placed-bid')]

卖家信息链接 = soup.select_one('ul.stats li.卖家 div.用户名 a')
卖家信息 = {
'用户名':卖家信息链接['标题'] if seller_info_link 其他 不包含,
'轮廓': 'https://carsandbids.com' + 卖家信息链接['href'] if seller_info_link 其他 不包含,
}

产品数据 = {
‘拍卖标题’:标题价格标签.文本.条形码() if 标题价格标签 其他 不包含,
‘车辆描述’:车辆描述,
‘图片库’:图片库,
'当前出价':current_bid_tag.text.strip() if current_bid_tag 其他 不包含,
‘出价历史’:出价历史,
'卖家信息':卖家信息
}

回报 产品数据
其他:
打印(“没有要解析的数据。”)

DEF 保存数据为json(数据,输出文件):
- 打开(输出文件, 'w') as 文件:
json.dump(数据,文件,缩进=2)

打印(f”数据保存至 {输出文件}")

# 运行脚本的主要函数
DEF ():
产品页面网址 = 'https://carsandbids.com/auctions/9QxJ8nV7/2014-bmw-335i-sedan'
输出文件 = ‘产品数据.json’
选项= {
'ajax_等待': '真的',
'页面等待': 10000
}

scraped_data = scrape_product_page(PRODUCT_PAGE_URL,选项)
将数据保存为json(抓取的数据,输出文件)

if __名字__ == '__主要__':
主()

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{
“拍卖标题”: “2014 款宝马 335i 轿车”,
“车辆描述”: {
“制作”: “宝马”,
“模型”: “3 系列保存”,
“里程”: “84,100”,
“车辆识别号”: “WBA3A9G52ENS65011”,
“标题状态”: “清洁(CA)”,
“地点”: “洛杉矶,CA 90068”,
“卖方”: “Miko_TContact”,
“引擎”: “3.0L 涡轮增压 I6”,
“传动系统”: “后轮驱动”,
“传播”: “自动(8 速)”,
“身材”: “轿车”,
“外观颜色”: “矿物灰金属”,
“室内色彩”: “珊瑚红”,
“卖家类型”: “私人派对”
},
“图片库”: {
“室内图片”: [
"https://media.carsandbids.com/cdn-cgi/image/width=542,quality=70/9004500a220bf3a3d455d15ee052cf8c332606f8/photos/rkVPlNqQ-IWpiLVYg8b-(edit).jpg?t=171849901125",
"https://media.carsandbids.com/cdn-cgi/image/width=542,quality=70/c1f0085c8fc8474dacc9711b49a8a8e8a1e02ed4/photos/rkVPlNqQ-56nXtS7MymS.jpg?t=171813663392",
"https://media.carsandbids.com/cdn-cgi/image/width=542,quality=70/c1f0085c8fc8474dacc9711b49a8a8e8a1e02ed4/photos/rkVPlNqQ-p1ZA2VO1lXd.jpg?t=171813664799"
],
“外部图像”: [
"https://media.carsandbids.com/cdn-cgi/image/width=542,quality=70/9004500a220bf3a3d455d15ee052cf8c332606f8/photos/rkVPlNqQ-cpo8coEnKk-(edit).jpg?t=171849888829",
"https://media.carsandbids.com/cdn-cgi/image/width=542,quality=70/9004500a220bf3a3d455d15ee052cf8c332606f8/photos/rkVPlNqQ-YF2_STjmrZ-(edit).jpg?t=171849886705",
"https://media.carsandbids.com/cdn-cgi/image/width=542,quality=70/9004500a220bf3a3d455d15ee052cf8c332606f8/photos/rkVPlNqQ-VQMbPK9FCO-(edit).jpg?t=171849894077",
"https://media.carsandbids.com/cdn-cgi/image/width=542,quality=70/9004500a220bf3a3d455d15ee052cf8c332606f8/photos/rkVPlNqQ-iqru8ZckuN-(edit).jpg?t=171849896490"
]
},
“当前出价”: “ $ 9,500”,
“出价历史”: [
“出价$9,500”,
“出价$9,201”,
“出价$9,100”,
“出价$9,000”,
“出价$8,900”,
“出价$8,800”,
“出价$8,600”,
“出价$8,500”,
“出价$8,100”,
“出价$7,950”,
“出价$7,850”
],
“卖家信息”: {
“用户名”: “Miko_T”,
“轮廓”: “https://carsandbids.com/user/Miko_T”
}
}

使用 Crawlbase 高效抓取 Carsandbids 数据(最后的想法)

分析 Carsandbids.com 可以揭示有关汽车市场的有趣观察结果,提供有关车辆列表、拍卖和卖家数据的更详细见解。使用 Crawlbase 爬取 API 可以轻松高效地从 Carsandbids 网站抓取重要信息。按照此博客中的步骤操作,即可成功抓取 Carsandbids 网站的搜索结果和产品页面。

如果您想扩展您的网络抓取功能,请考虑探索我们以下有关抓取其他重要网站的指南。

📜 如何抓取谷歌财经
📜 如何抓取 Google 新闻
📜 如何抓取谷歌学术搜索结果
📜 如何抓取 Google 搜索结果
📜 如何抓取谷歌地图
📜 如何抓取雅虎财经
📜 如何刮 Zillow

如果您有任何问题或反馈,我们的 支持团队 随时为您的网络抓取之旅提供帮助。快乐刮擦!

常见问题

只要您遵守他们的服务条款并负责任地使用数据,抓取 Carsandbids.com 的数据是合法的。请注意违反这些条款的行为,例如破坏他们的服务器或恶意使用数据。始终确保您的抓取活动合乎道德并遵守法律限制,以避免将来出现任何问题。

问:抓取 Carsandbids.com 的数据面临哪些挑战?

抓取 Carsandbids.com 数据存在一些困难。Carsandbids.com 网站包含动态内容,因此很难抓取,并且网站可能会对在规定时间内可以发出的请求数量施加速率限制。此外,CAPTCHA 系统可以阻止自动抓取尝试。要有效克服这些障碍,请使用可靠的 API,例如 Crawlbase 爬取 API 它管理动态内容以及处理速率限制并绕过 CAPTCHA 保护。

问:如何有效地使用从 Carsandbids.com 抓取的数据?

从 Carsandbids 网站获取的信息可能对各种目的非常有价值。您可以将其用于市场趋势分析、车辆价格监控和竞争性研究等目的。无论是想要以有竞争力的价格出售车辆的汽车经销商,还是研究市场动态的分析师,这些数据都可能有助于做出明智的决策。确保您安全地处理数据并使用它来获得可操作的见解,从而推动您的战略和业务决策。