Temu 是一个快速发展的电子商务平台,以价格极具竞争力的大量产品而闻名。Temu 涵盖从电子产品到时尚和家居用品等各种商品,已成为网上购物者的首选。其动态、JavaScript 呈现的页面使使用传统方法进行数据抓取变得具有挑战性,但使用正确的工具,它仍然是可以实现的。

在本指南中,我们将向您展示如何使用 爬虫库 Crawling API,旨在处理 CAPTCHA 和 JavaScript 呈现的页面。无论您是想收集产品信息进行分析、价格比较还是市场研究,本博客都将介绍有效提取数据的所有基本步骤。您将学习如何设置 Python 环境、创建 Temu 抓取工具、处理 Temu SERP 分页以及将数据存储在 CSV 文件中以便于访问。

读完本文后,您将可以使用抓取工具从 Temu 的列表和产品页面抓取有价值的数据。让我们开始吧!

目录

  1. 为什么要刮取 Temu?
  2. 从 Temu 中提取的关键数据点
  3. 爬虫库 Crawling API Temu Scraping 的
  • Crawlbase Python 库
  1. 设置 Python 环境
  • 安装 Python 和所需的库
  • 选择 IDE
  1. 抓取 Temu 搜索列表
  • 检查 HTML 中的 CSS 选择器
  • 编写搜索列表抓取工具
  • 在 Temu 中处理分页
  • 将数据存储在 CSV 文件中
  • 完整代码示例
  1. 抓取 Temu 产品页面
  • 检查 HTML 中的 CSS 选择器
  • 编写产品页面抓取工具
  • 将数据存储在 CSV 文件中
  • 完整代码示例
  1. 总结
  2. 常见问题

为什么要刮取 Temu?

一张显示抓取 Temu 的原因的图片

抓取 Temu 对企业、分析师和开发人员非常有用。Temu 拥有从廉价电子产品到服装和家居用品等各种产品,因此它是市场研究、价格跟踪和竞争对手分析的绝佳来源。通过提取价格、描述、评级和可用性等产品数据,企业可以保持竞争力并跟上市场步伐。

例如,抓取 Temu 可以帮助在线零售商和经销商找到热门产品、了解价格趋势并监控库存情况。对于个人项目或学术目的,Temu 的数据可用于创建价格比较工具、研究消费者趋势或查看产品随时间的表现。

Temu 使用 CAPTCHA 和 JavaScript,因此传统的抓取工具无法捕获数据。但是有了 爬虫库 Crawling API 您可以从 Temu 获取结构化数据。

从 Temu 中提取的关键数据点

抓取 Temu 时,您需要收集最重要的产品详细信息以支持您的目标,无论是用于市场分析、产品跟踪还是构建数据库。以下是您可以从 Temu 中提取的数据点:

  • 产品名称:名称有助于识别每个产品和类别。
  • 价格:价格对于趋势监测和比较同类产品非常重要。
  • 评级和评论:评论可以深入了解产品质量和客户满意度,评级则可以提供客户的整体看法。
  • 产品介绍:描述提供了产品的特性、材质和独特卖点的背景。
  • 图片网址:图像对于可视化数据库很重要,并且可以在您正在构建的任何网站或应用程序上使用。
  • 折扣和优惠:这些可以展示有竞争力的价格和流行产品。

爬虫库 Crawling API Temu Scraping 的

这款 爬虫库 Crawling API 使 Temu 的抓取变得高效而直接,尤其是因为 Temu 的大部分内容都依赖于 JavaScript,这使得传统的抓取方法变得困难。Crawlbase 通过像真正的浏览器一样呈现网页来解决此问题,让您可以访问完全加载的 HTML。

这就是为什么 Crawlbase Crawling API 非常适合抓取 Temu:

  • 处理动态内容:Crawlbase 管理 JavaScript 密集型页面,以便 Temu 上的所有产品数据都已加载并准备好进行抓取。
  • IP旋转:为了绕过 Temu 的安全检查,Crawlbase 会自动轮换 IP,以防止速率限制并降低被阻止的机会。
  • 快速高效:Crawlbase 允许您快速抓取大量数据,从而节省您的时间和资源。
  • 可定制的请求:您可以控制标头、cookie 和其他请求参数以满足您的抓取需求。

Crawlbase Python 库

Crawlbase Python 库进一步简化了您的抓取设置。要使用该库,您需要一个访问令牌,您可以通过以下方式获取 报名 对于 Crawlbase。

以下是请求 Crawlbase 的示例函数 Crawling API:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 爬行基地 进口 抓取API

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

DEF make_crawlbase_request(网址):
响应=crawling_api.get(url)

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

备注:要抓取像 Temu 这样的 JavaScript 呈现内容,您需要一个来自 Crawlbase 的 JavaScript (JS) 令牌。Crawlbase 提供 1,000 个免费请求来帮助您入门,并且注册时无需信用卡。有关更多指导,请查看官方 Crawlbase Crawling API 文件.

在下一节中,我们将指导如何设置用于抓取 Temu 的 Python 环境。

设置 Python 环境

要开始抓取 Temu,您需要设置 Python 环境。这意味着安装 Python 和所需的库,并选择集成开发环境 (IDE) 来编写代码。

安装 Python 和所需的库

首先,确保你的电脑上安装了 Python。你可以从 官方网站. 按照您的操作系统的安装说明进行操作。

现在你已经安装了 Python,你需要安装一些库来帮助抓取数据。所需的库包括 requestscrawlbase。下面介绍如何使用 pip 安装它们:

  1. 打开命令提示符或终端。
  2. 输入以下命令,然后按Enter:
1
2
点安装请求
点安装爬虫库

这些命令将下载并安装您需要的库。requests 库将帮助您发出 Web 请求。crawlbase 库允许您与 Crawlbase 进行交互 Crawling API.

选择 IDE

现在,您需要选择一个 IDE 进行编码。IDE 是一个帮助您编写、编辑和管理代码的程序。以下是一些选项:

  • PyCharm:具有代码完成和调试工具的完整 Python IDE;提供免费的社区版。
  • Visual Studio 代码(VS 代码):一个轻量级的编辑器,通过扩展和庞大的用户群支持 Python。
  • Jupyter笔记本:非常适合数据分析和测试,代码可以在浏览器中执行,方便共享。

每种方法都有其优点,因此请选择一种适合您的方法。现在您的 Python 环境已设置完毕,您可以开始抓取 Temu 的搜索列表了。

抓取 Temu 搜索列表

抓取 Temu 搜索结果需要了解页面的 HTML 结构、编写脚本来收集产品信息、使用“查看更多”按钮管理分页以及以结构化方式保存抓取的数据。让我们分解一下。

检查 HTML 中的 CSS 选择器

要开始抓取,请检查 Temu 搜索结果页面的 HTML 结构。在浏览器中打开 Temu 网站,右键单击产品列表,然后选择“检查”以查看 HTML 代码。

Temu 搜索列表 HTML 版 CSS 的屏幕截图

以下是您需要的关键元素:

  • 产品名称:在 h2 带有类的标签 _2BvQbnbN.
  • 价格:位于 span 带有类的标签 _2de9ERAH.
  • 图片网址: 位于 src 的属性 img 带有类的标签 goods-img-external.
  • 产品网址:在 href 属性中找到 a 带有类的标签 _2Tl9qLr1.

通过识别这些选择器,您将获得从 Temu 的搜索列表中抓取每个产品详细信息所需的基本结构。

编写搜索列表抓取工具

现在我们知道了选择器,让我们来编写爬虫。我们将使用 Python 和 Crawlbase Crawling API 处理动态内容。以下是开始抓取产品信息的函数:

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

# 使用 JS Token 初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

# 抓取 Temu 搜索列表的功能
DEF scrape_temu_search(网址):
响应 = crawling_api.get(url,{
'ajax_等待': '真的',
'页面等待': '5000'
})

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

产品 = []
项目 in 汤.选择('div.js-search-goodsList > div.autoFitList > div.EKDT7a3v'):
标题 = 项目.select_one(‘h2._2BvQbnbN’).text.strip() if item.select_one(‘h2._2BvQbnbN’) 其他 ''
价格 = item.select_one(‘span._2de9ERAH’).text.strip() if item.select_one(‘span._2de9ERAH’) 其他 ''
image_url = item.select_one('img.goods-img-外部')['源代码'] if item.select_one('img.goods-img-外部') 其他 ''
产品网址 = 'https://www.temu.com' +项目.选择一个(‘a._2Tl9qLr1’)['href'] if item.select_one(‘a._2Tl9qLr1’) 其他 ''
产品.附加({
'标题': 标题,
'价格': 价格,
'图片网址':图片网址,
‘产品网址’:产品网址
})

回报 产品及技术
其他:
打印(f“无法获取页面。状态: {回复[“标题”]['pc_status']}")
回报 没有

此函数获取 HTML,使用 BeautifulSoup 进行处理,并根据选择器提取产品详细信息。它返回产品信息列表。

在 Temu 中处理分页

Temu 使用“查看更多”按钮来加载其他列表。我们可以使用 Crawlbase 的 css_click_selector 模拟点击此按钮来访问更多页面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 分页抓取列表的功能
DEF scrape_temu_with_pagination(网址):
产品 = []
响应 = crawling_api.get(url,{
'ajax_等待': '真的',
'页面等待': '5000',
‘css_click_selector’: 'div.R8mNGZXv[role="按钮"]'
})

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

回报 产品及技术

每次加载新一批结果时,此代码都会通过“单击”“查看更多”按钮来收集来自多个页面的列表。

将数据存储在 CSV 文件中

为了将抓取的数据存储在 CSV 文件中,我们会将每个产品的信息写入行中,创建一种易于分析的结构化文件格式。

1
2
3
4
5
6
7
8
9
进口 CSV

# 将产品数据保存为 CSV 的功能
DEF 保存到csv(数据,文件名=‘temu_产品.csv’):
- 打开(文件名,模式='w', 换行='', 编码='utf-8') as 文件:
writer = csv.DictWriter(文件,字段名称=['标题', '价格', '图片网址', ‘产品网址’])
writer.writeheader()
项目 in 数据:
writer.writerow(项目)

此代码创建一个包含每个数据点的列的 CSV 文件,从而可以轻松地离线分析 Temu 列表。

完整代码示例

以下是抓取 Temu 搜索列表、处理分页和将数据保存到 CSV 的完整脚本:

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
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 CSV

# 使用你的 JS Token 初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

# 从 HTML 中提取产品详细信息
DEF 提取产品信息():
产品 = []
项目 in 汤.选择('div.js-search-goodsList > div.autoFitList > div.EKDT7a3v'):
标题 = 项目.select_one(‘h2._2BvQbnbN’).text.strip() if item.select_one(‘h2._2BvQbnbN’) 其他 ''
价格 = item.select_one(‘span._2de9ERAH’).text.strip() if item.select_one(‘span._2de9ERAH’) 其他 ''
image_url = item.select_one('img.goods-img-外部')['源代码'] if item.select_one('img.goods-img-外部') item.select_one('img.goods-img-外部')has_attr('源代码') 其他 ''
产品网址 = 'https://www.temu.com' +项目.选择一个(‘a._2Tl9qLr1’)['href'] if item.select_one(‘a._2Tl9qLr1’) 其他 ''
产品.附加({
'标题': 标题,
'价格': 价格,
'图片网址':图片网址,
‘产品网址’:产品网址
})
回报 产品及技术

# 分页抓取列表的功能
DEF scrape_temu_with_pagination(网址):
产品 = []
响应 = crawling_api.get(url,{
'ajax_等待': '真的',
'页面等待': '5000',
‘css_click_selector’: 'div.R8mNGZXv[role="按钮"]'
})

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

回报 产品及技术

# 将抓取的数据保存为 CSV
DEF 保存到csv(数据,文件名=‘temu_产品.csv’):
- 打开(文件名,模式='w', 换行='', 编码='utf-8') as 文件:
writer = csv.DictWriter(文件,字段名称=['标题', '价格', '图片网址', ‘产品网址’])
writer.writeheader()
项目 in 数据:
writer.writerow(项目)

# 用法示例
产品=scrape_temu_with_pagination('https://www.temu.com/search?q=your_search_query')
保存到csv(产品)

temu_products.csv 快照:

Temu SERP 抓取工具输出

抓取 Temu 产品页面

从 Temu 的搜索列表中收集产品 URL 列表后,下一步是从每个产品页面抓取详细信息。这将使我们能够收集更具体的信息,例如详细描述、规格和评论。以下是操作方法。

检查 HTML 中的 CSS 选择器

首先,检查 Temu 产品页面上的 HTML 结构。在浏览器中打开产品 URL,右键单击要抓取的元素,然后选择“检查”。

Temu 产品页面 HTML 的 CSS 截图

要寻找的关键要素包括:

  • 产品名称:通常发现于 div 带有类似类的标签 _2rn4tqXP.
  • 价格:通常在 div 带有类似类的标签 _1vkz0rqG,选择最后一个 span 儿童的实际价格。
  • 产品介绍:通常在带有 B_OB3uj0 类的 div 标签中,提供有关产品的详细信息。
  • 图片网址:通常位于 src 的属性 img div 内的标签 role="button" 以及类似的类 wxWpAMbp.

识别这些选择器可以更轻松地提取每种产品所需的数据。

编写产品页面抓取工具

了解了 CSS 选择器后,我们就可以编写爬虫程序来收集每个产品页面的详细信息。我们将使用 Python 和 Crawlbase Crawling API,处理动态内容。

以下是从 Temu 产品页面抓取产品信息的示例函数:

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
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 re

# 使用 JS Token 初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

# 用于抓取 Temu 产品页面的功能
DEF scrape_product_page(网址):
响应 = crawling_api.get(url,{
'ajax_等待': '真的',
'页面等待': '5000'
})

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

# 提取产品详细信息
标题 = re.sub(r'\s+', '', 汤.select_one(‘div._2rn4tqXP’).text.strip())
价格=汤.select_one(‘div._1vkz0rqG 跨度:最后一个子项’).text.strip()
描述 = re.sub(r'\s+', '', 汤.select_one(‘div.B_OB3uj0’).text.strip())
images_url = [img['源代码'] IMG in 汤.选择('div[role="按钮"] img.wxWpAMbp')]

# 以字典形式返回产品详细信息
回报 {
'标题': 标题,
'价格': 价格,
'描述': 描述,
'图片网址':图片网址,
‘产品网址’: 网址
}
其他:
打印(f“无法获取页面。状态: {回复[“标题”]['pc_status']}")
回报 没有

在此函数中,我们使用 BeautifulSoup 解析 HTML 并使用标识的选择器定位每个元素。这将返回包含产品详细信息的字典。

将数据存储在 CSV 文件中

收集到产品信息后,我们可以将其保存为 CSV 文件。这有助于保持数据井然有序,便于日后查看或分析。

1
2
3
4
5
6
7
8
9
进口 CSV

# 将产品数据保存为 CSV 的功能
DEF 保存产品数据到csv(数据,文件名='temu_产品详情.csv'):
- 打开(文件名,模式='w', 换行='', 编码='utf-8') as 文件:
writer = csv.DictWriter(文件,字段名称=['标题', '价格', '描述', '图片网址', ‘产品网址’])
writer.writeheader()
项目 in 数据:
writer.writerow(项目)

此功能将每个产品的信息写入一个 CSV 文件,其中包含每个详细信息的列。

完整代码示例

这是从 Temu 抓取多个产品页面的完整脚本,使用搜索列表中的 URL,将数据保存到 CSV 文件中。

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
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 CSV
进口 re

# 使用你的 JS Token 初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

# 抓取单个产品页面的功能
DEF scrape_product_page(网址):
响应 = crawling_api.get(url,{
'ajax_等待': '真的',
'页面等待': '5000'
})

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

# 提取产品详细信息
标题 = re.sub(r'\s+', '', 汤.select_one(‘div._2rn4tqXP’).text.strip())
价格=汤.select_one(‘div._1vkz0rqG 跨度:最后一个子项’).text.strip()
描述 = re.sub(r'\s+', '', 汤.select_one(‘div.B_OB3uj0’).text.strip())
images_url = [img['源代码'] IMG in 汤.选择('div[role="按钮"] img.wxWpAMbp')]

# 以字典形式返回产品详细信息
回报 {
'标题': 标题,
'价格': 价格,
'描述': 描述,
'图片网址':图片网址,
‘产品网址’: 网址
}
其他:
打印(f“无法获取页面。状态: {回复[“标题”]['pc_status']}")
回报 没有

# 将数据保存到 CSV 的函数
DEF 保存产品数据到csv(数据,文件名='temu_产品详情.csv'):
- 打开(文件名,模式='w', 换行='', 编码='utf-8') as 文件:
writer = csv.DictWriter(文件,字段名称=['标题', '价格', '描述', '图片网址', ‘产品网址’])
writer.writeheader()
项目 in 数据:
writer.writerow(项目)

# 抓取多个产品页面并保存为 CSV
产品网址 = [
'https://www.temu.com/pk-en/goods-detail-g-601099527865713.html',
'https://www.temu.com/pk-en/goods-detail-g-601099537192760.html',
# 在此处添加更多产品 URL
]
所有产品 = []

网址 in 产品网址:
产品数据 = scrape_product_page(网址)
if 产品数据:
all_products.append(产品数据)

# 将所有产品数据保存为 CSV
保存产品数据到csv(所有产品)

temu_product_details.csv 快照:

Temu 产品页面抓取工具输出

总结

从 Temu 抓取产品数据有助于分析市场趋势、跟踪竞争对手和研究价格变化。本指南介绍了如何设置搜索列表和产品页面的抓取工具、处理分页以及将数据保存到 CSV 文件。

使用 爬虫库 Crawling API 管理大量使用 JavaScript 的内容,简化数据收集。请务必查看 Temu 的服务条款以避免出现问题,因为过度抓取可能会影响其服务器。

定期测试和更新代码,因为网站结构可能会发生变化,需要调整 CSS 选择器或逻辑。如果您有兴趣探索从其他电子商务平台抓取数据,请随时浏览以下综合指南。

📜 如何抓取亚马逊
📜 如何刮沃尔玛
📜 如何抓取全球速卖通
📜 如何抓取 Zalando
📜 如何抓取 Costco 信息

请联系我们 支持 如果您有任何疑问,祝您抓取愉快!

常见问题

出于个人研究、分析或教育目的抓取 Temu 的数据通常是可以接受的,但必须遵守 Temu 的服务条款。避免进行可能影响其服务器或违反政策的大量抓取。请务必检查其最新条款以保持合规,并考虑合乎道德的数据抓取做法。

问:我应该多久更新一次 Temu 的抓取代码?

网站可能会更改其结构,尤其是 HTML 和 CSS 选择器,这可能会导致您的抓取工具崩溃。定期测试您的抓取工具是个好主意 - 至少每月一次或当您注意到数据收集不正确时。如果您的抓取工具停止工作,请检查网站是否有更新的选择器并调整您的代码。

问:我可以将 Temu 数据存储在数据库中而不是 CSV 文件中吗?

是的,对于大型项目来说,将抓取的数据存储在数据库(如 MySQL 或 MongoDB)中是一个不错的选择。数据库使查询和分析数据变得更加容易。您可以用数据库命令替换代码中的 CSV 存储步骤,并拥有更高效、更可扩展的设置。