Farfetch 是最大的奢侈品时尚平台之一,拥有来自全球顶级品牌的数千种高端服装、鞋子和配饰。无论您是进行市场研究、分析奢侈品时尚趋势还是建立电子商务数据库,从 Farfetch 抓取数据都非常有用。
然而,与许多其他网站一样,Farfetch 使用 JavaScript 来加载其内容,因此传统的抓取工具无法抓取您需要的零售数据。这就是 爬虫库 Crawling API 进来。它通过处理 JavaScript 内容、管理代理和绕过反机器人机制使抓取变得简单——所有这些只需用 Python 中的几行代码即可完成。
在这篇博客中,我们将使用 Crawlbase 爬取 Farfetch SERP 和产品页面 Crawling API 在Python中。
目录
- Farfetch 数据抓取的好处
- 从 Farfetch 中提取的关键数据点
- 爬虫库 Crawling API 用于 Farfetch 抓取
- 如何设置 Python 环境
- 抓取 Farfetch 搜索结果
- 检查 HTML 中的 CSS 选择器
- 编写搜索列表抓取工具
- 在 Farfetch 中处理分页
- 将数据存储在 CSV 文件中
- 完整代码示例
- 抓取 Farfetch 产品页面
- 检查 HTML 中的 CSS 选择器
- 编写产品页面抓取工具
- 将数据存储在 CSV 文件中
- 完整代码示例
- 总结
- 常见问题
Farfetch 数据抓取的好处
Farfetch 是奢侈品时尚市场最大的参与者之一,它将消费者与商店和高端品牌联系起来。Farfetch 是企业、学者和开发者的宝库,拥有从高端服装到配饰的数千种产品。

通过抓取 Farfetch 数据,您可以了解到:
- 定价趋势:奢侈品在不同品牌、类别和地区的定价方式。
- 产品供货:跟踪库存水平和可用性,了解哪些商品卖得快以及哪些品牌受欢迎。
- 市场趋势:查找时尚潮流、季节性新品以及新品牌。
- 竞争对手分析:与竞争对手比较价格、产品描述和折扣。
- 建立数据库:建立一个包含标题、描述、价格、图像等内容的干净的产品数据库。
抓取 Farfetch 数据时,请关注以下数据点:
- 的Blurb:简短的描述,帮助您识别产品。
- 品牌:追踪并识别平台上的奢侈品品牌。
- 价格:同时享受原价和折扣价。
- 产品介绍:收集有关材料和特征的信息以供编目。
- 尺寸和供货情况:监控库存状况和热门尺寸的需求。
- 类别:分析特定产品领域内的趋势。
- 图片:为视觉数据库提取产品图像的 URL。
- 评分和评论:了解顾客偏好并评估产品质量。
- 区域定价:比较不同货币和地区的价格。
- 配送方案选择:评估运输时间和成本。
通过收集这些数据点,您可以获得市场研究和业务增长的见解。现在,让我们看看如何使用 Crawlbase 抓取 Farfetch Crawling API.
爬虫库 Crawling API 用于 Farfetch 抓取
这款 爬虫库 Crawling API 是一款网络抓取工具,可轻松从 Farfetch 提取数据。它可处理 JavaScript 渲染、代理和 CAPTCHA 解析,因此您可以专注于构建抓取工具,而无需担心技术问题。
Crawlbase Python 库
Crawlbase 还拥有 Python 库 使 API 集成变得简单。一旦你 注册申请 SearchGPT 等候名单,您将收到一个用于身份验证的访问令牌。以下是如何使用它的简单示例:
1 2 3 4 5 6 7 8 9 10 11 12 13
| 在 爬行基地 进口 抓取API
爬行 API = 爬行 API({'令牌': 'YOUR_CRAWLBASE_TOKEN'})
DEF 获取页面内容(网址): 响应=crawling_api.get(url)
if 回复[“标题”]['pc_status'] == '200': 回报 回复['身体']。解码('utf-8') 其他: 打印(f“获取页面时出错。状态代码: {回复[“标题”]['pc_status']}") 回报 没有
|
关键点:
- Crawlbase 有用于静态和动态内容抓取的单独令牌。
- 使用 JavaScript (JS) 令牌抓取 Farfetch 动态内容。
- 爬虫库 Crawling API 为您处理 JavaScript 渲染和代理。
如何设置 Python 环境
在开始抓取 Farfetch 数据之前,您需要设置 Python 环境。这将指导您完成安装 Python、设置所需库和选择满足您需求的 IDE 的过程。
安装 Python 和所需的库
- 安装Python:
- 在MyCAD中点击 软件更新 蟒蛇网 并下载最新版本的Python。
- 确保在安装过程中选中“将 Python 添加到 PATH”选项。
- 安装所需的库:
1
| pip 安装 crawlbase beautifulsoup4
|
- 这些库对于网页抓取和利用 Crawlbase 至关重要 Crawling API.
选择 IDE
要编写和管理代码,您需要一个 IDE 或代码编辑器。以下是一些选项:
选择适合您的 IDE,您就可以开始了。在下一节中,我们将开始抓取 Farfetch 的搜索列表。
抓取 Farfetch 搜索结果
现在您已经设置好了 Python 环境,让我们开始从 Farfetch 抓取搜索结果。本节将指导您如何检查 HTML、创建抓取工具、管理分页以及将数据保存到 CSV 文件中。
检查 HTML 结构
在编写抓取工具之前,我们需要检查 Farfetch 搜索结果的 HTML,以查找产品标题、价格和链接。在本例中,我们将使用以下 URL 中的“男士运动鞋”等类别。
1
| https://www.farfetch.com/pk/shopping/men/trainers-2/items.aspx
|
- 打开开发者工具:转到 URL 并按
Ctrl + Shift + I
(或 Cmd + Option + I
在 Mac 上)打开浏览器的开发人员工具。 - 检查产品元素:将鼠标悬停在产品标题、价格和链接上,以找到其对应的标签和 CSS 类。

Farfetch 搜索列表的关键选择器:
- 品牌:发现于
<p>
标记为 data-component="ProductCardBrandName"
属性。 - 描述:发现于
<p>
标记为 data-component="ProductCardDescription"
属性。 - 价格:发现于
<p>
标记为 data-component="Price"
or data-component="PriceFinal"
属性。 - 已优惠:发现于
<p>
标记为 data-component="PriceDiscount"
属性。 - 产品链接:发现于
<a>
产品容器内的标签。 href 属性提供产品链接,前缀为 https://www.farfetch.com
.
编写搜索列表抓取工具
这是一个使用以下代码抓取产品数据的 Python 脚本 Crawlbase
和 BeautifulSoup
图书馆:
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
| 在 爬行基地 进口 抓取API 在 bs4 进口 美丽汤
爬行 API = 爬行 API({'令牌': 'YOUR_CRAWLBASE_TOKEN'})
DEF scrape_farfetch_listings(网址): 选项= { 'ajax_等待': '真的', '页面等待': '5000' } 响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200': 汤 = BeautifulSoup(响应['身体']。解码('utf-8'), “html.解析器”) 产品 = []
项目 in 汤.选择('ul#catalog-grid > li[data-testid="productCard"]'): 品牌 = item.select_one('p[data-component="ProductCardBrandName"]').text.strip() if item.select_one('p[data-component="ProductCardBrandName"]') 其他 “不适用” 描述 = item.select_one('p[data-component="ProductCardDescription"]').text.strip() if item.select_one('p[data-component="ProductCardDescription"]') 其他 “不适用” 价格 = item.select_one('p[数据组件="价格"],p[数据组件="PriceFinal"]').text.strip() if item.select_one('p[数据组件="价格"],p[数据组件="PriceFinal"]') 其他 “不适用” 折扣 = item.select_one('p[data-component="价格折扣"]').text.strip() if item.select_one('p[data-component="价格折扣"]') 其他 “不适用” 链接 = item.select_one(“一种”)[“参考”] if item.select_one(“一种”) 其他 “不适用”
产品.附加({“品牌”: 品牌, “说明”: 描述, “价钱”: 价格, “折扣”: 折扣, “关联”: f“https://www.farfetch.com{关联}"})
回报 产品 其他: 打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}") 回报 []
网址= “https://www.farfetch.com/shopping/men/shoes-2/items.aspx” 产品 = scrape_farfetch_listings(url)
产品展示 in 产品: 打印(产品)
|
此代码定义了一个函数, scrape_farfetch_listings
,从 Farfetch 搜索结果中抓取产品详细信息。它会向 Crawlbase 发送请求 Crawling API 获取 Farfetch SERP HTML。它使用 ajax_wait
和 page_wait
Crawlbase 提供的参数 Crawling API 处理 JS 内容。您可以阅读这些参数 点击这里.
如果请求成功,该函数将使用 BeautifulSoup 解析返回的 HTML 并提取每个产品卡的产品详细信息。提取的数据作为字典存储在列表中,该函数返回产品列表。
在 Farfetch 中处理分页
Farfetch 在多个页面上列出产品。要抓取所有列表,请通过将页面参数附加到 URL 来遍历每个页面(例如, ?page=2
).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| DEF scrape_multiple_pages(base_url、total_pages): 所有产品 = []
页 in 范围(1, 总页数 + 1): 分页网址 = f"{base_url}?页面={页}" 打印(f”抓取页面: {页}") 产品 = scrape_farfetch_listings(paginated_url) all_products.extend(产品)
回报 所有产品
基本网址 = “https://www.farfetch.com/shopping/men/shoes-2/items.aspx” all_products = scrape_multiple_pages(base_url,total_pages=5) 打印(f”抓取的产品总数: {LEN(全部产品)}")
|
将数据存储在 CSV 文件中
抓取后,将数据保存到 CSV 文件中以供进一步分析。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 进口 CSV
DEF 保存到csv(数据,文件名=“farfetch_listings.csv”): 键 = 数据[0].keys()
- open(文件名,模式=“w”, 换行="", 编码=“utf-8”) as 文件: writer = csv.DictWriter(文件,字段名称=键) writer.writeheader() writer.writerows(数据)
打印(f”数据保存至 {文档名称}")
if 所有产品: 保存到csv(所有产品)
|
完整代码示例
以下是使用 Crawlbase 抓取 Farfetch 搜索列表的完整脚本 Crawling API,处理分页,并将数据保存到 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 61 62 63 64
| 在 爬行基地 进口 抓取API 在 bs4 进口 美丽汤 进口 CSV
爬行 API = 爬行 API({'令牌': 'YOUR_CRAWLBASE_TOKEN'})
DEF scrape_farfetch_listings(网址): 选项= { 'ajax_等待': '真的', '页面等待': '5000' } 响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200': 汤 = BeautifulSoup(响应['身体']。解码('utf-8'), “html.解析器”) 产品 = []
项目 in 汤.选择('ul#catalog-grid > li[data-testid="productCard"]'): 品牌 = item.select_one('p[data-component="ProductCardBrandName"]').text.strip() if item.select_one('p[data-component="ProductCardBrandName"]') 其他 “不适用” 描述 = item.select_one('p[data-component="ProductCardDescription"]').text.strip() if item.select_one('p[data-component="ProductCardDescription"]') 其他 “不适用” 价格 = item.select_one('p[数据组件="价格"],p[数据组件="PriceFinal"]').text.strip() if item.select_one('p[数据组件="价格"],p[数据组件="PriceFinal"]') 其他 “不适用” 折扣 = item.select_one('p[data-component="价格折扣"]').text.strip() if item.select_one('p[data-component="价格折扣"]') 其他 “不适用” 链接 = item.select_one(“一种”)[“参考”] if item.select_one(“一种”) 其他 “不适用”
产品.附加({“品牌”: 品牌, “说明”: 描述, “价钱”: 价格, “折扣”: 折扣, “关联”: f“https://www.farfetch.com{关联}"})
回报 产品 其他: 打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}") 回报 []
DEF scrape_multiple_pages(base_url、total_pages): 所有产品 = []
页 in 范围(1, 总页数 + 1): 分页网址 = f"{base_url}?页面={页}" 打印(f”抓取页面: {页}") 产品 = scrape_farfetch_listings(paginated_url) all_products.extend(产品)
回报 所有产品
DEF 保存到csv(数据,文件名=“farfetch_listings.csv”): 键 = 数据[0].keys()
- open(文件名,模式=“w”, 换行="", 编码=“utf-8”) as 文件: writer = csv.DictWriter(文件,字段名称=键) writer.writeheader() writer.writerows(数据)
打印(f”数据保存至 {文档名称}")
基本网址 = “https://www.farfetch.com/shopping/men/shoes-2/items.aspx” all_products = scrape_multiple_pages(base_url,total_pages=5)
if 所有产品: 保存到csv(所有产品)
|
farfetch_listings.csv
文件快照:

在下一节中,我们将探讨抓取单个产品页面以获取更详细的数据。
抓取 Farfetch 产品页面
现在您已经抓取了产品列表,下一步是抓取各个产品页面以获取产品说明、尺寸、材料等。在这里,我们将向您展示如何检查 HTML、编写产品页面抓取工具以及将数据存储在 CSV 文件中。
检查 HTML 中的 CSS 选择器
访问 Farfetch 产品页面,例如:
1
| https://www.farfetch.com/pk/shopping/men/gucci-screener-sneakers-item-27582236.aspx
|
在浏览器中打开开发人员工具(Ctrl + Shift + I
or Cmd + Option + I
在 Mac 上)并检查您想要抓取的关键元素。

Farfetch 产品页面的关键选择器:
- 的Blurb:位于
<p>
标记 data-testid="product-short-description"
. - 品牌:位于
<a>
标记 data-component="LinkGhostDark"
. - 价格:位于
<div>
标记 id="price"
. - 描述:位于嵌套
<div>
- data-component="AccordionPanel"
位于内部 div
- data-testid="product-information-accordion"
.
编写产品页面抓取工具
这是一个使用以下代码爬取产品详细信息的 Python 脚本 Crawlbase
和 BeautifulSoap
:
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
| 在 爬行基地 进口 抓取API 在 bs4 进口 美丽汤
爬行 API = 爬行 API({'令牌': 'YOUR_CRAWLBASE_TOKEN'})
DEF scrape_product_page(网址): 选项= { “ajax_wait”: “真正”, “页面等待”: “3000” } 响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200': 汤 = BeautifulSoup(响应['身体'], “html.解析器”)
blurb = soup.select_one('p[data-testid="产品简短描述"]').text.strip() if 汤.select_one('p[data-testid="产品简短描述"]') 其他 “不适用” 品牌=汤.select_one('a[数据组件="LinkGhostDark"]').text.strip() if 汤.select_one('a[数据组件="LinkGhostDark"]') 其他 “不适用” 价格=汤.select_one('div#price').text.strip() if 汤.select_one('div#price') 其他 “不适用” 描述 = soup.select_one('div[data-testid="产品信息-accordion"] div[data-component="AccordionPanel"]').text.strip() if 汤.select_one('div[data-testid="产品信息-accordion"] div[data-component="AccordionPanel"]') 其他 “不适用”
回报 { “简介”:简介, “品牌”: 品牌, “价钱”: 价格, “说明”: 描述 } 其他: 打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}") 回报 没有
网址= “https://www.farfetch.com/shopping/men/sneakers-product-12345.aspx” 产品详情 = scrape_product_page(网址) 打印(产品详情)
|
这款 scrape_product_page
函数向给定的 URL 发出 HTTP 请求,并提供渲染 JavaScript 的选项。然后,它使用 BeautifulSoup 解析 HTML 并提取简介、品牌、价格、描述和尺寸。数据以字典形式返回。如果请求失败,它会打印错误。
将数据存储在 CSV 文件中
抓取产品详细信息后,您可以将其保存到 CSV 文件中以便于访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 进口 CSV
DEF 保存产品到csv(产品数据,文件名=“farfetch_产品详情.csv”): 键 = 产品数据.键()
- open(文件名,模式=“w”, 换行="", 编码=“utf-8”) as 文件: writer = csv.DictWriter(文件,字段名称=键) writer.writeheader() writer.writerow(产品数据)
打印(f”产品数据保存至 {文档名称}")
if 产品详情: 保存产品到csv(产品详情)
|
完整代码示例
以下是使用 Crawlbase 抓取 Farfetch 产品页面的完整脚本 Crawling API 并将数据保存到 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
| 在 爬行基地 进口 抓取API 在 bs4 进口 美丽汤 进口 CSV
爬行 API = 爬行 API({'令牌': 'YOUR_CRAWLBASE_TOKEN'})
DEF scrape_product_page(网址): 选项= { “ajax_wait”: “真正”, “页面等待”: “3000” } 响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200': 汤 = BeautifulSoup(响应['身体'], “html.解析器”)
blurb = soup.select_one('p[data-testid="产品简短描述"]').text.strip() if 汤.select_one('p[data-testid="产品简短描述"]') 其他 “不适用” 品牌=汤.select_one('a[数据组件="LinkGhostDark"]').text.strip() if 汤.select_one('a[数据组件="LinkGhostDark"]') 其他 “不适用” 价格=汤.select_one('div#price').text.strip() if 汤.select_one('div#price') 其他 “不适用” 描述 = soup.select_one('div[data-testid="产品信息-accordion"] div[data-component="AccordionPanel"]').text.strip() if 汤.select_one('div[data-testid="产品信息-accordion"] div[data-component="AccordionPanel"]') 其他 “不适用”
回报 { “简介”:简介, “品牌”: 品牌, “价钱”: 价格, “说明”: 描述 } 其他: 打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}") 回报 没有
DEF 保存产品到csv(产品数据,文件名=“farfetch_产品详情.csv”): 键 = 产品数据.键()
- open(文件名,模式=“w”, 换行="", 编码=“utf-8”) as 文件: writer = csv.DictWriter(文件,字段名称=键) writer.writeheader() writer.writerow(产品数据)
打印(f”产品数据保存至 {文档名称}")
产品网址 = “https://www.farfetch.com/shopping/men/sneakers-product-12345.aspx” 产品详情 = scrape_product_page(产品网址)
if 产品详情: 保存产品到csv(产品详情)
|
farfetch_product_details.csv
文件快照:

总结
抓取 Farfetch 可以为你提供有价值的数据,用于市场研究、价格分析以及在时尚界保持领先地位。使用 爬虫库 Crawling API 和 BeautifulSoup 这样的库,您可以抓取产品详细信息、自动收集数据并简化您的工作流程。
但请记住尊重网站 TOS 和道德抓取。借助本博客提供的代码和指导,您可以轻松抓取 Farfetch 搜索和产品页面。想要抓取更多网站?查看我们的其他指南。
📜 如何抓取Monster.com
📜 如何抓取 Groupon
📜 如何抓取 TechCrunch 的内容
📜 如何抓取 X.com 推文页面
📜 如何抓取 Clutch.co
如果你有疑问或想提供反馈,我们的 支持团队 可以帮助进行网页抓取。祝您抓取愉快!
常见问题
问:抓取 Farfetch 时如何处理 JavaScript 内容?
抓取 Farfetch 等动态网站时,JavaScript 内容可能无法立即加载。使用 爬虫库 Crawling API,支持 JavaScript 渲染。这将确保在提取数据之前页面已完全加载,包括动态内容。您可以在 API 请求中将 ajax_wait 选项设置为 true,以便 JavaScript 有足够的时间渲染页面。
问:我可以从 Farfetch 上的多个页面抓取产品详情吗?
是的,您可以从 Farfetch 上的多个页面抓取产品详细信息。为此,您需要处理分页。您可以调整 URL 以包含页码参数,并循环从每个页面抓取列表。如果与 Crawlbase 一起使用 Crawling API,您就可以抓取多个页面而不必担心被禁止。
问:如何存储抓取的数据?
从 Farfetch 抓取数据后,必须以有组织的格式存储数据。您可以将数据保存在 CSV 或 JSON 文件中,以便于访问和将来使用。例如,代码可以将抓取的产品详细信息写入 CSV 文件,确保以结构化的方式保存信息,这对于分析或共享非常理想。