《使用 Python 和 Scrapy 半小时爬了 10 个在线商店的网页》

本文详细介绍了如何使用Python的Scrapy框架在半小时内爬取10个在线商店的手提包网页信息。从安装Scrapy到设置项目文件,再到编写和运行网络蜘蛛,提取结构化数据,最后存储为JSON文件并进行数据清理,整个过程无需手动干预。Scrapy的强大功能使得自动网页抓取和数据集生成变得高效便捷。
摘要由CSDN通过智能技术生成

 

使用 Python 和 Scrapy 半小时爬了10 个在线商店的网页

Scrapy 是 Python 开发的一个快速,高层次的屏幕抓取和 web 抓取框架,用于抓取 web 站点并从页面中提取结构化的数据。Scrapy 用途广泛,可以用于数据挖掘、监测和自动化测试。本文作者 Erdem İşbilen 为我们演示了如何使用 Python 和 Scrapy 怎样在半个小时内对 10 个在线商店抓取信息。有了 Python 和 Scrapy,我们就可以完成大量的工作,而不需要自己费大力气去开发。

获取启动 App 项目所需的源数据是一步。即便你是全栈开发人员,希望开发一款出色的 Web 应用程序,并能全身心投入到项目中。在编写代码之前,仍然需要一个与领域相关的数据集。这是因为现代应用程序会同时或成批处理大量数据,以便为其用户提供价值。本文,我将解释生成这样一个数据集的工作流程。你将会看到,我在没有任何人工干预的情况下是如何对许多网站进行自动网页抓取的。

我的目标是为价格比较网络应用程序生成一个数据集。我将使用的产品类别以手提袋为例。对于这样的应用,应该每天从不同的在线商店那里收集手提包的产品信息和价格信息。尽管有些在线商店提供了 API 让你访问所需的信息,但并非所有在线商店都会这么做。所以,网页抓取不可避免。

在本文的示例中,我将使用 PythonSparky 为 10 个不同的在线商店生成网络蜘蛛(Web spider)。然后,我将使用 Apache Airflow 自动化这一过程,这样就不需要人工干预来定期执行整个过程。

源代码和现场演示 Web 应用程序

你可以在 GitHub 仓库 找到所有相关的源代码,也可以访问在线 Web 应用程序,使用的是网页抓取项目提供的数据。

在开始任何网页抓取项目之前,必须先定义哪些网站将包含在项目中。我决定抓取 10 个网站,这些网站是土耳其手提包类别中访问量最大的在线商店。

步骤 1:安装 Scrapy 并设置项目文件夹

在创建 Scrapy 蜘蛛之前,必须将 Scrapy 安装到计算机中,并生成 Scrapy 项目。请查看下面的帖子了解更多的信息。

Fuel Up the Deep Learning: Custom Dataset Creation with Web Scraping (推动深度学习:使用网页抓取创建自定义数据集)

 

 
 

#安装 Scrapy

 

$ pip install scrapy

 

#安装用于下载产品图片的图像

 

$ pip install image

 

#使用 Scrapy 开始网页抓取项目

 

$ scrapy startproject fashionWebScraping

 

$ cd fashionWebScraping

 

$ ls

 

#创建项目文件夹,如下所述

 

$ mkdir csvFiles

 

$ mkdir images_scraped

 

$ mkdir jsonFiles

 

$ mkdir utilityScripts

项目文件夹和文件

使用 Python 和 Scrapy 半小时爬了10 个在线商店的网页

项目的文件夹结构

 

我在本地计算机上创建了一个文件夹结构,将项目文件整齐地放入不同文件夹。csvFiles 文件夹包含了每个被抓取的网站的 CSV 文件。网络蜘蛛将从那些 CSV 文件中读取“起始 URL”来启动网页抓取,因为我不想在网络蜘蛛中对它们进行硬编码。

fashionWebScraping 文件夹包含 Scrapy 蜘蛛和助手脚本,比如 settings.pyitem.pypipelines.py。我们必须修改其中一些 Scrapy 助手脚本,才能成功执行网页抓取过程。

抓取的产品图像将保存在 images_scraped 文件夹中。

使用 Python 和 Scrapy 半小时爬了10 个在线商店的网页

在网页抓取过程中,所有的产品信息,如价格、名称、产品链接和图像链接都将存储在 jsonFiles 文件夹中的 JSON 文件中。

  • deldub.py 用于在网页抓取结束后,检测并删除 JSON 文件中重复的产品信息。
  • jsonPrep.py 是另一个实用程序脚本,用于在网页抓取结束后,检测并删除 JSON 文件中的空行项。
  • deleteFiles.py 可删除在上一次网页抓取会话中生成的所有 JSON 文件。
  • jsonToes.py 通过读取 JSON 文件,在远程位置填充 ElasticSearch 集群。这是提供实施全文搜索体验所必需的。
  • sitemap_gen.py 用于生成涵盖所有产品链接的站点地图。

步骤 2:理解特定网站的 URL 结构并为起始 URL 填充 CSV 文件

创建项目文件夹后,下一步就是使用我们要抓取的每个网站的起始 URL 来填充 CSV 文件。几乎所有的电子商务网站都提供分页功能,以便通过产品列表为用户导航。每次导航到下一页时,URL 中的 page 参数都会增加。请参见下面的示例 URL,其中使用了 page 参数。

 

 
 

https://www.derimod.com.tr/kadin-canta-aksesuar/?page=1

我将使用 {} 占位符,这样就可以通过增加 page 的值来对 URL 进行迭代。我还将使用 CSV 文件中的 gender 列来定义特定 URL 的性别类别。

因此,最终的 CSV 文件看起来如下图所示:

使用 Python 和 Scrapy 半小时爬了10 个在线商店的网页

同样的原则,也适用于项目中的其他网站,可以在我的 GitHub 仓库中找到已填充的 CSV 文件

步骤 3:修改 items.pysettings.py 文件

要开始网页抓取,我们必须修改 items.py 来定义用于存储抓取数据的 item objects

为了定义通用输出数据格式,Scrapy 提供了 Item 类。Item

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值