零售巨头 Target 拥有强大的在线平台,吸引了数百万访客。凭借用户友好的界面和丰富的产品目录,Target 的网站已成为数据爱好者的宝库。该网站拥有从电子产品、服装到家居用品等多种类别,使其成为那些寻求全面市场洞察的人的主要目标。

Target 的网站提供了丰富的景观。拥有数百万个产品页面、客户评论和动态定价信息,有价值的数据提取潜力巨大。截至 2023 年 234.3 月,统计数据进一步凸显了塔吉特在线业务的重要性。来自世界各地的 XNUMX 亿人访问了该网站,其中大部分来自美国。

目标市场数据

无论是跟踪产品趋势、监控竞争对手价格,还是通过评论分析客户情绪,塔吉特数字货架中隐藏的数据对于企业和研究人员都具有巨大的价值。

为什么要深入研究目标抓取?答案在于它所释放的大量机会。通过利用 Target 抓取工具的力量,人们可以获得竞争优势,在不断变化的市场格局中保持领先地位。加入我们的旅程,我们将使用以下方法了解网络抓取的细微差别 蟒蛇,从亲自动手 (DIY) 方法开始,然后探索该方法的效率 Crawlbase 爬取 API。让我们揭开埋藏在 Target 数字通道中的秘密,并利用工具有效地抓取 Target 数据。

目录

  1. 了解 Target 的 SERP 结构
  • 目标产品列表页面的结构
  • 要提取的关键数据点
  1. 设置您的环境
  • 安装 Python 和所需的库
  • 选择开发 IDE
  1. 使用 Python DIY 方法
  • 使用请求库
  • 检查目标网站的 CSS 选择器
  • 利用 BeautifulSoup 进行 HTML 解析
  1. DIY 方法的缺点
  • 与可靠性和可扩展性相关的问题
  • 随着时间的推移,维护面临挑战
  1. Crawlbase 抓取 API:克服 DIY 限制
  • 它如何简化网络抓取过程
  • 使用专用 API 进行网页抓取的好处
  1. 具有 Crawlbase 抓取 API 的目标抓取器
  • Crawlbase 注册和 API 令牌
  • 使用 Crawlbase 库访问 Crawling API
  • 轻松提取目标产品数据
  • 展示提高的效率和可靠性
  1. 比较:DIY 与 Crawlbase 爬行 API
  2. 最后的思考
  3. 常见问题解答

了解 Target 的 SERP 结构

使用网络抓取浏览 Target 网站时,必须了解 Target 搜索引擎结果页面 (SERP) 的结构。以下是这些页面上的组件以及我们旨在提取的关键数据点的详细信息:

目标产品列表页面的结构

将 Target 网站设想为一个组织良好的目录。就像报纸有标题、主要故事和旁白一样,塔吉特的产品列表页面也遵循结构化格式。

目标搜索页面
  • 产品展示柜:这类似于报纸上的主要报道,其中包含符合您搜索条件的产品。
  • 搜索栏:与报纸的标题空间类似,搜索栏是您输入要查找的内容的地方。
  • 附加信息:有时,您会在侧面发现额外的内容 - 促销内容、相关产品或有关所选商品的快速详细信息。
  • 页脚:在底部,您可能会遇到 Target 网站其他部分的链接,或者找到有关政策和条款的更多信息。

了解这种布局使我们的 Target 抓取工具能够有效地在虚拟通道中导航。

要提取的关键数据点

现在,了解 Target 的 SERP 结构后,让我们确定提取的基本数据点:

  1. 产品列表:我们抓取 Target 任务的主要重点是获取与搜索相关的产品列表。
  2. 产品名称:正如报纸的标题可以让您快速了解主要故事一样,产品名称也是每个列出项目的标题。
  3. 产品说明:在每个产品名称下方,您通常会找到一个简短的描述或片段,提供对产品功能的深入了解,而无需单击它。
  4. 促销内容:有时,初始结果可能包括促销内容。将这些视为促销并将其与自然列表区分开来至关重要。
  5. 相关产品:在底部,可能会有相关产品的建议,为进一步搜索或相关主题提供额外的想法。

了解 Target 的 SERP 结构可以指导我们的抓取工作,使我们能够有效地从 Target 的数字货架中收集相关信息。

设置您的环境

开始抓取 Target 数据的旅程需要一个准备充分的环境。首先,我们要确保您拥有可用的基本工具。

安装 Python 和所需的库

首先安装 Python,这是一种多功能编程语言,它将作为我们网络抓取的基础。参观 Python官方网站 并下载适合您操作系统的最新版本。在安装过程中,请务必选中“将 Python 添加到 PATH”框以获得无缝体验。

现在,让我们为我们的抓取冒险配备关键库:

  • 请求库:Python 中进行 HTTP 请求不可或缺的工具。通过打开终端或命令提示符并输入以下命令来安装它:
1
点安装请求
  • 美丽汤图书馆:这个库及其解析器选项使我们能够导航和解析 HTML,提取所需的信息。安装它:
1
点安装beautifulsoup4
  • 抓取库:要无缝利用 Crawlbase Crawling API,请安装 Crawlbase Python 库:
1
点安装爬虫库

您的 Python 环境现在配备了启动我们的 Target 抓取工作所需的工具。

选择开发 IDE

选择舒适的集成开发环境 (IDE) 可以增强您的编码体验。受欢迎的选择包括:

  • Visual Studio 代码 (VSCode):一个轻量级、功能丰富的代码编辑器。从安装它 VSCode 官方网站.
  • PyCharm:具有高级功能的强大 Python IDE。下载社区版 此处.
  • 谷歌合作实验室:基于云的平台,允许您在协作环境中编写和执行 Python 代码。通过访问它 谷歌合作实验室.

有了 Python、Requests 和 BeautifulSoup 以及您选择的 IDE,您就可以开始构建 Target Scraper 的旅程了。让我们深入了解使用这些工具的 DIY 方法。

使用 Python DIY 方法

现在我们的环境已经设置完毕,让我们卷起袖子,深入研究使用 Python、Requests 和 BeautifulSoup 自己动手抓取 Target 数据的方法。按照以下步骤浏览错综复杂的 Target 网站并提取所需信息。

使用请求库

Requests 库将成为我们通往网络的网关,使我们能够检索目标网页的 HTML 内容。在我们的示例中,我们重点关注从 Target 网站抓取与“女士毛衣”相关的数据。使用以下代码片段向 Target 网站发出请求:

1
2
3
4
5
6
7
8
9
10
11
进口 要求
urllib.parse 进口 报价

网址= f'https://www.target.com/s?searchTerm=${引用(“女式毛衣”)}'
响应 = requests.get(url)

if 响应.status_code == 200:
html_content = 响应. 文本
打印(html_内容)
其他:
打印(f'错误: {响应.status_code}')

打开您喜欢的文本编辑器或 IDE,复制提供的代码,并将其保存在 Python 文件中。例如,将其命名为 target_scraper.py.

运行脚本:

打开终端或命令提示符并导航到您保存的目录 target_scraper.py。使用以下命令执行脚本:

1
python target_scraper.py

当您按 Enter 时,您的脚本将生效,向 Target 网站发送请求,检索 HTML 内容并将其显示在您的终端上。

检查目标网站的 CSS 选择器

目标搜索页面检查
  1. 访问开发者工具:在浏览器中右键单击网页并选择“检查”(或“检查元素”)。这将打开开发人员工具,允许您探索 HTML 结构。
  2. 通过 HTML 导航:在开发人员工具中,浏览 HTML 元素以识别您想要抓取的特定数据。查找与目标信息关联的唯一标识符、类或标签。
  3. 识别 CSS 选择器:记下与感兴趣的元素对应的 CSS 选择器。这些选择器将充当 Python 脚本的指针来查找和提取所需的数据。

利用 BeautifulSoup 进行 HTML 解析

掌握了 HTML 内容并确定了 CSS 选择器后,让我们利用 BeautifulSoup 来解析和浏览该结构。例如,我们将为指定目标搜索页面上列出的每个产品提取基本详细信息,例如产品标题、评级、评论计数、价格和 URL 链接(产品页面 URL)。然后,检索到的数据被结构化并可以存储以供进一步分析或处理。让我们扩展之前的脚本并从 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
进口 要求
urllib.parse 进口 报价
bs4 进口 美丽汤
进口 JSON

DEF 提取评级(element):
# 获取样式属性
style_attribute = element.get('风格')

# 从样式属性中解析宽度值
if 样式属性:
style_properties = style_attribute.split(';')
支柱 in 样式属性:
prop = prop.strip()
if prop.startswith('宽度:'):
宽度值 = 属性[LEN('宽度:'):]。条()
if width_value.endswith('%'):
评级百分比= 浮动(宽度值[:-1])
# 假设评分为 5 分
rating_out_of_5 = (评级百分比/ 100)* 5
回报 (评级为 5 分, 2)

回报 不包含

DEF scrap_target_listing(网址):
响应 = requests.get(url)

搜索结果 = []

if 响应.status_code == 200:
html_content = 响应. 文本
汤 = BeautifulSoup(html_content, 'html.parser')

产品=汤.选择('div[data-test="product-grid"] 部分[class^="styles__StyledRowWrapper"] div[class^="styles__StyledCardWrapper"]')

产品展示 in 产品:
title_element = 产品.select_one('div[data-test="product-details"] a[data-test="product-title"]')
rating_element = 产品.select_one('div[data-test="产品详细信息"] div[data-ref="评级掩码"]')
review_count_element = 产品.select_one('div[data-test=“产品详细信息”] span[data-test=“评级计数”]')
价格元素 = 产品.select_one('div[data-test="产品详细信息"] span[data-test="当前价格"]')
产品url_元素 = 产品.select_one('div[data-test="product-details"] a[data-test="product-title"]')

产品数据 = {
'标题': title_element.text.strip() if 标题元素 其他 不包含,
'评分':提取评级(评级元素) if 评级元素 其他 不包含,
“评论计数”: review_count_element.text.strip() if 评论计数元素 其他 不包含,
'价格': Price_element.text.strip() if 价格元素 其他 不包含,
“产品网址”: 'https://www.target.com' + 产品网址元素['href'] if 产品网址元素 其他 不包含
}

搜索结果.append(产品数据)

其他:
打印(f'错误: {响应.status_code}')

回报 搜索结果

DEF ():
搜索项= “女式毛衣”
网址= f'https://www.target.com/s?searchTerm={引用(搜索词)}'
结果= scrape_target_listing(url)

打印(json.dumps(结果,缩进=2))

if __名字__ == “__主要的__”:
主()

您将收到空输出:

1
[]

但为什么?发生这种情况是因为 Target 使用 JavaScript 在其 SERP 页面上动态生成搜索结果。当您向目标 URL 发送 HTTP 请求时,HTML 响应缺少有意义的数据,从而导致缺少有价值的信息。

这种 DIY 方法为使用 Python 抓取 Target 数据奠定了基础。然而,它也有其局限性,包括处理动态内容、可靠性和可扩展性方面的潜在挑战。

DIY 方法的缺点

虽然使用 Python、Requests 和 BeautifulSoup 的 DIY 方法可以直接进入网页抓取,但了解其固有的缺点至关重要。在使用自己动手的方法创建 Target 抓取工具时,出现了两个突出的挑战:

  1. 动态内容处理:在处理严重依赖通过 JavaScript 加载的动态内容的网站时,DIY 抓取可能会失败。因此,提取的数据可能无法完全代表 Target 网站上提供的实时信息。
  2. 速率限制和 IP 阻止:Web 服务器通常会实施速率限制或 IP 阻止机制以防止滥用。 DIY 脚本可能会无意中触发这些机制,导致临时或永久的访问限制,从而阻碍抓取操作的可靠性和可扩展性。

随着时间的推移,维护面临的挑战

  1. HTML 结构变化:网站经常进行更新和重新设计,改变 HTML 结构。对 Target 站点结构的任何修改都可能会破坏您的 DIY 抓取工具,从而需要定期调整以维持功能。
  2. CSS 选择器更改:如果 Target 更改与您正在抓取的数据关联的 CSS 选择器,您的脚本可能无法找到所需的信息。定期监测和适应对于应对这些变化至关重要。

了解这些缺点强调需要更强大和可持续的解决方案。

Crawlbase 抓取 API:克服 DIY 限制

在我们追求高效抓取 Target 产品数据的过程中, Crawlbase 爬取 API 作为一种强大的解决方案,它提供了超越 DIY 方法限制的专用方法。让我们探讨一下这个 API 如何简化网页抓取过程,并揭示使用专用工具完成此任务的好处。

它如何简化网络抓取过程

Crawlbase 爬行 API 以其用户友好且高效的设计简化了开发人员的网页抓取。使用 参数 通过这个API,我们可以处理任何抓取问题。以下是其主要功能的简要概述:

Crawlbase 抓取 API 功能
  1. 适应性设置:使用“format”、“user_agent”和“page_wait”等设置自定义 API 请求,以根据特定要求定制抓取过程。
  2. 灵活的数据格式:在 JSON 和 HTML 响应格式之间进行选择,使 API 满足不同的开发人员需求并简化数据提取。
  3. Cookie 和标头处理:使用“get_cookies”和“get_headers”从目标网站访问关键信息,例如 cookie 和标头,这对于身份验证或跟踪任务至关重要。
  4. 动态内容处理:擅长使用“page_wait”和“ajax_wait”等参数抓取包含动态内容(包括 JavaScript 元素)的页面。
  5. IP地址轮换:通过切换IP地址增强匿名性,最大限度地降低被网站屏蔽的风险,并确保网络爬行成功。
  6. 地理规格:利用“国家/地区”参数来指定地理位置,这对于提取特定区域的数据非常有用。
  7. Tor 网络支持:启用“tor_network”参数以通过 Tor 网络爬行洋葱网站,安全地增强隐私和对暗网内容的访问。
  8. 截图捕获:使用屏幕截图功能捕获视觉上下文,为收集的数据提供额外的理解层。
  9. 数据抓取器集成:无缝使用预定义的数据抓取器来简化从网页中提取特定信息的过程,降低自定义抓取逻辑的复杂性。
  10. 异步爬取:支持通过“async”参数进行异步爬取,为开发者提供请求标识符(RID),方便从云存储中检索爬取的数据。
  11. 自动解析:利用autoparse参数减少后处理工作量,该参数提供JSON格式的解析信息,提高数据提取和解释的效率。

使用专用 API 进行网页抓取的好处

Crawlbase 爬行 API 带来了诸多好处,使其成为从事网络抓取任务的开发人员的首选:

  1. 值得信赖:API 旨在处理不同的抓取场景,即使面对动态或复杂的网页也能确保可靠性。
  2. 可扩展性:Crawlbase 的基础设施可实现高效扩展、容纳更大的抓取项目并确保一致的性能。
  3. 定制:开发人员可以定制他们的抓取参数,使 API 适应目标网站的独特要求。
  4. 效率:API 对速度和性能的优化意味着更快的数据提取,从而实现更快的洞察和决策。
  5. 全面支持:Crawlbase 提供广泛的文档和支持,帮助开发人员了解 API 的功能并解决遇到的任何挑战。

当我们从 DIY 方法过渡时,Crawlbase Crawling API 的实施有望简化网络抓取过程,并释放一系列优势,从而提高 Target 抓取工作的效率和有效性。在下一节中,我们将指导您完成使用 Crawlbase Crawling API 轻松提取 Target 产品数据的实际步骤。

具有 Crawlbase 抓取 API 的目标抓取器

现在我们已经探索了 Crawlbase Crawling API 的功能,接下来让我们指导您完成使用这个强大工具构建 Target Scraper 的实际步骤。

Crawlbase 注册和 API 令牌

使用 Crawlbase Crawling API 获取目标数据首先在 Crawlbase 平台上创建帐户。让我们引导您完成 Crawlbase 的帐户设置过程:

  1. 导航到抓取基地:打开网络浏览器并前往 Crawlbase 网站 注册页面 开始您的注册之旅。
  2. 提供您的凭证:输入您的电子邮件地址并为您的 Crawlbase 帐户创建密码。确保您准确填写必要的详细信息。
  3. 验证程序:提交您的详细信息后,您的收件箱中可能会收到一封验证电子邮件。请注意并完成电子邮件中概述的验证步骤。
  4. 登录:验证您的帐户后,返回 Crawlbase 网站并使用您刚刚创建的凭据登录。
  5. 保护您的 API 令牌:访问 Crawlbase Crawling API 需要 API 令牌,您可以在 账户文件.

快速注意:Crawlbase 提供两种类型的令牌 - 一种是为静态网站量身定制的,另一种是为动态或 JavaScript 驱动的网站设计的。由于我们的重点是抓取 Target,因此我们将使用 JS 令牌。奖励:Crawlbase 为 Crawling API 提供 1,000 个免费请求的初始限额,使其成为我们网络抓取探险的理想选择。

使用 Crawlbase 库访问 Crawling API

利用 抓取库 在 Python 中与 Crawling API 无缝交互。提供的代码片段演示了如何通过 Crawlbase Python 库初始化和使用 Crawling API。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 爬行基地 进口 抓取API
urllib.parse 进口 报价

API_TOKEN = 'YOUR_CRAWLBASE_JS_TOKEN'
爬行 API = 爬行 API({'令牌':API_TOKEN})

网址= f'https://www.target.com/s?searchTerm=${引用(“女式毛衣”)}'

响应=crawling_api.get(url)

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

轻松提取目标产品数据

使用Crawlbase爬行API,我们可以轻松收集Target产品信息。通过利用 JS 令牌并调整 ajax_wait 和 page_wait 等 API 参数,我们可以管理 JavaScript 渲染。让我们通过合并 Crawling API 来改进我们的 DIY 脚本。

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
 爬行基地 进口 抓取API
urllib.parse 进口 报价
bs4 进口 美丽汤
进口 JSON

DEF 提取评级(element):
# ...(不变)

DEF scrap_target_listing(API、网址):
响应 = api.get(url, {'ajax_等待': '真的', '页面等待': 5000 })

搜索结果 = []

if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
汤 = BeautifulSoup(html_content, 'html.parser')

产品=汤.选择('div[data-test="product-grid"] 部分[class^="styles__StyledRowWrapper"] div[class^="styles__StyledCardWrapper"]')

产品展示 in 产品:
title_element = 产品.select_one('div[data-test="product-details"] a[data-test="product-title"]')
rating_element = 产品.select_one('div[data-test="产品详细信息"] div[data-ref="评级掩码"]')
review_count_element = 产品.select_one('div[data-test=“产品详细信息”] span[data-test=“评级计数”]')
价格元素 = 产品.select_one('div[data-test="产品详细信息"] span[data-test="当前价格"]')
产品url_元素 = 产品.select_one('div[data-test="product-details"] a[data-test="product-title"]')

产品数据 = {
'标题': title_element.text.strip() if 标题元素 其他 不包含,
'评分':提取评级(评级元素) if 评级元素 其他 不包含,
“评论计数”: review_count_element.text.strip() if 评论计数元素 其他 不包含,
'价格': Price_element.text.strip() if 价格元素 其他 不包含,
“产品网址”: 'https://www.target.com' + 产品网址元素['href'] if 产品网址元素 其他 不包含
}

搜索结果.append(产品数据)

其他:
打印(f'错误: {回复[“标题”][“电脑状态”]}')

回报 搜索结果

DEF ():
API_TOKEN = 'YOUR_CRAWLBASE_JS_TOKEN'
爬行 API = 爬行 API({'令牌':API_TOKEN})

搜索项= “女式毛衣”
网址= f'https://www.target.com/s?searchTerm={引用(搜索词)}'
结果= scrape_target_listing(crawling_api, url)

打印(json.dumps(结果,ensure_ascii=, 缩进=2))

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
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
83
84
85
86
87
[
{
“标题”: “Style Republic 100% 纯羊绒圆领女式毛衣”,
“评分”: ,
「评论数」: ,
“价钱”: “ $ 99.00”,
“产品网址”: “https://www.target.com/p/style-republic-100-pure-cashmere-crew-neck-women-s-sweater/-/A-90570284?preselect=90570311#lnk=sametab”
},
{
“标题”: “Style Republic 100% 纯羊绒 V 领女式毛衣”,
“评分”: ,
「评论数」: ,
“价钱”: “ $ 99.00”,
“产品网址”: “https://www.target.com/p/style-republic-100-pure-cashmere-v-neck-women-s-sweater/-/A-90571072?preselect=90571114#lnk=sametab”
},
{
“标题”: “女式细号圆领毛衣 - A New Day™”,
“评分”: 3.9,
「评论数」: “587”,
“价钱”: “ $ 20.00”,
“产品网址”: “https://www.target.com/p/women-s-fine-gauge-crewneck-sweater-a-new-day/-/A-88228365?preselect=88228183#lnk=sametab”
},
{
“标题”: “女式圆领仿羊绒套头毛衣 - Universal Thread™”,
“评分”: 4.2,
「评论数」: “746”,
“价钱”: “20.00 美元 - 25.00 美元”,
“产品网址”: “https://www.target.com/p/women-s-crew-neck-cashmere-like-pullover-sweater-universal-thread/-/A-88062926?preselect=87817915#lnk=sametab”
},
{
“标题”: “女式圆领图案套头毛衣 - A New Day™”,
“评分”: 4.6,
「评论数」: “469”,
“价钱”: “ $ 21.25”,
“产品网址”: “https://www.target.com/p/women-s-crewneck-graphic-pullover-sweater-a-new-day/-/A-89130911?preselect=88826973#lnk=sametab”
},
{
“标题”: “女式细规格 V 领毛衣 - A New Day™”,
“评分”: 3.9,
「评论数」: “419”,
“价钱”: “ $ 20.00”,
“产品网址”: “https://www.target.com/p/women-s-fine-gauge-v-neck-sweater-a-new-day/-/A-88228797?preselect=88749045#lnk=sametab”
},
{
“标题”: “Agnes Orinda 女式大码长开襟条纹毛衣针织开衫”,
“评分”: 1.0,
「评论数」: “1”,
“价钱”: “ $ 33.99”,
“产品网址”: “https://www.target.com/p/agnes-orinda-women-s-plus-size-long-open-front-striped-sweater-knit-cardigans/-/A-87334185?preselect=88786783#lnk =sametab”
},
{
“标题”: “Agnes Orinda 女式大码针织深 V 领包裹式曲线套头毛衣”,
“评分”: ,
「评论数」: ,
“价钱”: “36.69 美元 - 52.49 美元”,
“产品网址”: “https://www.target.com/p/agnes-orinda-women-s-plus-size-knit-deep-v-neck-wrap-curvy-pullover-sweaters/-/A-89666687?preselect=89666694 #lnk=sametab"
},
{
“标题”: “Agnes Orinda 女式大码前开襟 3/4 袖瑞士圆点轻便休闲开衫”,
“评分”: ,
「评论数」: ,
“价钱”: “ $ 29.99”,
“产品网址”: “https://www.target.com/p/agnes-orinda-women-s-plus-size-open-front-3-4-sleeve-swiss-dots-lightweight-casual-cardigan/-/A-90521798 ?预选=90521806#lnk=sametab"
},
{
“标题”: “女士春季开衫毛衣 - A New Day™”,
“评分”: ,
「评论数」: ,
“价钱”: “ $ 28.00”,
“产品网址”: “https://www.target.com/p/women-s-spring-cardigan-sweater-a-new-day/-/A-89531651?preselect=89531635#lnk=sametab”
},
{
“标题”: “女士春季套头毛衣 - A New Day™”,
“评分”: 5.0,
「评论数」: “3”,
“价钱”: “ $ 25.00”,
“产品网址”: “https://www.target.com/p/women-s-spring-pullover-sweater-a-new-day/-/A-89528449?preselect=89528429#lnk=sametab”
},
{
“标题”: “女式罗纹针织开衫 - Universal Thread™”,
“评分”: 4.3,
「评论数」: “11”,
“价钱”: “ $ 25.00”,
“产品网址”: “https://www.target.com/p/women-s-rib-knit-cardigan-universal-thread/-/A-89436873?preselect=89229541#lnk=sametab”
},
....... 更多的
]

处理分页

从 Target 的搜索结果中收集信息需要浏览多个页面,每个页面都显示一组产品列表。为了确保数据集完整,我们必须管理分页。这意味着在必要时浏览结果页面并请求更多数据。

目标网站使用 &Nao URL 中的参数用于处理分页。它指定在每个页面上显示结果的起点。例如, &Nao=1 表示第一组 24 个结果,并且 &Nao=24 指向下一组。该参数使我们能够系统地收集不同页面的数据并构建全面的数据集进行分析。

让我们增强现有的脚本以无缝处理分页。

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
 爬行基地 进口 抓取API
urllib.parse 进口 报价
bs4 进口 美丽汤

DEF 提取评级(element):
# ...(不变)

DEF scrap_target_listing(api、base_url):
搜索结果 = []

页码 = 1
每页= 24 # 每页产品数量

:
# 用当前页码构造URL
网址= f'{base_url}&奈奥={(页码 - 1) * 每页 + 1}'

响应 = api.get(url, {'ajax_等待': '真的', '页面等待': 5000 })

if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
汤 = BeautifulSoup(html_content, 'html.parser')

产品=汤.选择('div[data-test="product-grid"] 部分[class^="styles__StyledRowWrapper"] div[class^="styles__StyledCardWrapper"]')

产品展示 in 产品:
title_element = 产品.select_one('div[data-test="product-details"] a[data-test="product-title"]')
rating_element = 产品.select_one('div[data-test="产品详细信息"] div[data-ref="评级掩码"]')
review_count_element = 产品.select_one('div[data-test=“产品详细信息”] span[data-test=“评级计数”]')
价格元素 = 产品.select_one('div[data-test="产品详细信息"] span[data-test="当前价格"]')
产品url_元素 = 产品.select_one('div[data-test="product-details"] a[data-test="product-title"]')

产品数据 = {
'标题': title_element.text.strip() if 标题元素 其他 不包含,
'评分':提取评级(评级元素) if 评级元素 其他 不包含,
“评论计数”: review_count_element.text.strip() if 评论计数元素 其他 不包含,
'价格': Price_element.text.strip() if 价格元素 其他 不包含,
“产品网址”: 'https://www.target.com' + 产品网址元素['href'] if 产品网址元素 其他 不包含
}

搜索结果.append(产品数据)

页码 += 1

# 如果没有下一页则中断循环
if 不能 汤.选择('按钮[data-test =“下一个”]:not([禁用]'):
打破

其他:
打印(f'错误: {回复[“标题”][“电脑状态”]}')
打破 # 出错时中断循环

回报 搜索结果

DEF ():
API_TOKEN = 'YOUR_CRAWLBASE_JS_TOKEN'
爬行 API = 爬行 API({'令牌':API_TOKEN})

搜索项= “女式毛衣”
基本网址 = f'https://www.target.com/s?searchTerm={引用(搜索词)}'
结果 = scrape_target_listing(crawling_api, base_url)

# 进一步处理抓取的产品列表数据

if __名字__ == “__主要的__”:
主()

备注:Crawlbase 有许多内置的抓取工具,您可以将其与我们的 Crawling API 一起使用。在我们的网站中了解更多关于他们的信息 文件。我们还根据您的需求创建定制解决方案。我们技术精湛的团队可以为您制定解决方案。这样,您就不必一直担心查看网站详细信息和 CSS 选择器。 Crawlbase 将为您处理,以便您可以专注于您的目标。联系我们 此处.

比较:DIY 与 Crawlbase 爬行 API

在抓取 Target 产品数据时,选择正确的方法可以显着影响网络抓取工作的效率和成功。让我们将使用 Python、Requests 和 BeautifulSoup 的传统 Do-It-Yourself (DIY) 方法与简化的 Crawlbase Crawling API 进行比较。

Python DIY 与 Crawlbase 爬行 API

最后的思考

抓取 Target 产品数据、简单性和有效性是关键。虽然 DIY 方法提供了一个学习曲线,但 Crawlbase 爬行 API 脱颖而出,成为明智的选择。告别可靠性问题和可扩展性障碍;选择 Crawlbase 抓取 API 以获得简单、可靠且可扩展的解决方案,轻松抓取 Target。

如果您有兴趣探索从其他电子商务平台进行抓取,请随意探索以下综合指南。

📜 如何抓取亚马逊

📜 如何刮沃尔玛

📜 如何抓取全球速卖通

📜 如何抓取 Flipkart

📜 如何抓取 Etsy

网络抓取可能会带来挑战,而您的成功很重要。如果您需要额外的指导或遇到障碍,请毫不犹豫地与我们联系。我们的 敬业的团队 在这里为您的网络抓取世界之旅提供支持。快乐刮擦!

常见问题解答

网络抓取做法可能会受到法律考虑,因此有必要审查 Target 的服务条款和 robots.txt 文件以确保遵守其政策。始终优先考虑道德和负责任的抓取行为,尊重网站的条款和条件。此外,了解特定司法管辖区有关网络抓取的相关法律和法规对于采取合法和尊重的方法至关重要。

Q2:网络抓取面临哪些常见挑战?

无论选择哪种方法,网络抓取通常都会遇到挑战,包括动态内容、对网站变化的适应性以及保持道德和法律合规性的重要性。处理动态内容(例如 JavaScript 生成的元素)需要复杂的技术来进行全面的数据提取。此外,随着时间的推移,网站可能会发生结构变化,因此需要定期更新抓取脚本。遵守道德和法律标准对于确保负责任和尊重的网络抓取行为至关重要。

Q3:为什么选择Crawlbase Crawling API来抓取Target而不是DIY方法?

Crawlbase 爬行 API 因其简化的流程、适应性、效率和可靠性而成为抓取 Target 的首选。它擅长处理动态内容、支持 IP 轮换以保持匿名,并确保即使在大规模抓取项目中也能保持一致的性能。 API 的用户友好设计和全面的功能使其成为 DIY 方法的卓越解决方案。

Q4:Crawlbase爬取API适合大规模抓取项目吗?

绝对地。 Crawlbase Crawling API 专为可扩展性而设计,使其非常适合大规模抓取项目。其高效的架构可确保最佳性能,使开发人员能够轻松处理大量数据提取任务。 API 的适应性和可靠性使其成为不同规模项目的可靠选择。