了解Python中的Gazpacho及其在网络刮削中的应用

414 阅读7分钟

了解Python中的Gazpacho及其在网络刮削中的应用

通过搜索和复制粘贴的方式在网上获取大量的数据可能会很乏味和费时。为了让它变得更简单、更快速,我们可以通过使用网络刮削工具从多个网站和网页中根据我们的需要加载和提取数据来实现这一过程的自动化。

这篇文章将涵盖很多关于网络刮削工具的内容,它在现实生活中的应用,以及我们如何使用Gazpacho Python库来刮削网络数据。

先决条件

要继续学习本教程,读者应该。

  • 对Python的基本概念有初步了解。
  • 你的机器已经安装了Python。
  • 安装Jupyter Notebook或其他可以运行Python的IDE/编辑器。

在你的电脑上安装Jupyter。

网络搜刮

网络刮削,也被称为网络采集或网络提取,通常用于从互联网上获取信息。它比人工方法更快、更容易。它是一种从网页中提取数据的自动方法,通过查询网络服务器,请求数据(通常以HTML和构成网页的其他文件的形式),然后解析它以提取所需信息。它是通过被称为 "Dream "的自动化软件实现的。 网络刮削器的自动化软件,该软件专门用于执行数据采集。

网络刮削器的组件

该软件由各种组件组成,如下所述。

  • 网络爬虫模块。网络搜刮器的一个重要组成部分,使其能够通过向URL发送HTTP或HTTPS查询来浏览目标网站/网页。然后以非结构化的形式下载HTML内容并传递给下一个组件,即提取器。
  • 提取器。这个组件处理从网络爬虫模块获取的HTML内容,并将数据提取为半结构化的格式。它也被称为解析器模块,因为它与许多解析方法一起工作,如正则表达式、HTML解析、DOM解析和人工智能。
  • 数据转换和清洗模块。提取器收集的数据并不是马上就可以使用的;在我们利用它之前,它需要经过一些清洗过程。为此,可以采用字符串处理和正则表达式等方法。提取和转换可以在一个过程中完成。
  • 一旦我们提取了所需的数据,它就会以标准格式存储在数据库中,以JSON或CSV格式存储在存储模块中。

网络搜刮器的操作

为了使网络刮刀能够执行和完成刮削过程,它要经过下面的各种步骤。

  • 首先,网络搜刮器通过网络爬虫从多个网站和网页上下载所要求的内容。
  • 由于网站上的大部分数据都是HTML和非结构化的,网络爬虫将解析下载的内容并提取结构化数据。
  • 当我们将数据从非结构化提取为结构化形式时,搜刮器会将其保存为几种格式之一,如CSV、JSON或数据库。
  • 当结构化数据被存储后,网络刮削器将对获得的数据进行分析。

网络刮削的应用

我们在各种现实世界的场景中利用网络刮削,包括。

  • 作为比较,网络刮削器可以从众多电子商务网站收集数据,特别是与产品定价有关的数据。
  • 内容聚合器,如新闻和就业聚合器,经常使用网络搜刮来为其用户提供最新的数据。
  • 为销售和营销目的收集数据,如电子邮件和电话号码。
  • 用于搜索引擎的网站优化的SEO工具中。
  • 用于机器学习项目的数据检索。

Python中的网络刮削

网络刮削涉及各种各样的编程技术和技巧。在Python中,网络刮削是通过各种库来完成的。

  • Requests - 它是网络抓取最基本和最重要的库,用于提出各种类型的HTTP请求,如GETPOST 。它不解析检索到的HTML数据,所以需要像Beautiful Soup这样的库。
  • lxml - 它是一个快速的、具有生产质量的、高性能的HTML和XML解析库,因为请求库不能解析从网页上获取的HTML,所以需要它。
  • Beautiful Soup - 它是使用最广泛的搜刮库,可以产生解析树来阅读HTML和XML数据。它能自动将传入和传出的文件转换为Unicode和UTF-8。
  • Selenium - 是一个程序的集合,而不是一个单一的工具。它是一个免费的网络应用程序测试工具,可以在多个浏览器和平台上工作。
  • Scrapy - 是一个快速、开源的网络抓取系统。它使用基于XPath的选择器,从在线网页中提取数据。
  • Gazpacho - 是一个现代、简单、快速的网络抓取库。

Gazpacho库

在本教程中,我们将重点介绍如何使用Gazpacho库来自动从网页和网站中提取数据。它是一个现代的网络刮削Python库,稳定且安装后零依赖性。它可以通过从请求库和Beautiful Soup库中分别导入一些类,来结合这两个库的功能。

要使用这个库,通过在命令提示符中输入命令python ,检查Python是否安装在你的机器上。

一旦Python被安装并运行,我们就可以使用下面的pip 命令来安装这个库。

pip install gazpacho

Output

为了展示我们如何使用该库进行网络刮削,我们将从一个假的电脑和平板电脑网站刮削webscraper.io的网页。

首先,我们将从请求库中导入get方法,在指定了网页的URL后,该方法将用于获取网页的HTML数据。如图所示,get() 方法将获取URL并提取附着在它上面的HTML。

from gazpacho import get
url ='https://webscraper.io/test-sites/e-commerce/static/computers/tablets'
html = get(url)
html

如下图所示,它将使用html ,显示一个汤状的文本。

Output

由于提取的HTML数据是非结构化的形式,我们将使用Gazpacho的Soup类来解析并从下载的内容中获得结构化的数据。

from gazpacho import Soup
soup = Soup(html)

现在,为了找到一些关于网页内容的数据,我们将使用Soup对象的.find()方法。在我们的例子中,让我们来寻找平板电脑的标题。

soup.find('p', {'class':'description'})

从上面的语句中,第一个参数p ,用单引号表示我们要检索的HTML标签。第二个,class ,包含我们想要提取的类名;description 。上述语句的输出将是一个属于HTML类的所有项目的数据列表description ,如下图所示。

输出。

Output

从上面的输出中,我们可以从结构化的HTML数据中获得文本数据,使用.text 属性。让我们通过定义一个函数来显示结构化和清晰的HTML数据,获得更多关于片子的细节;标题、描述和价格,如下图所示。

captions= soup.find("div", {'class':'caption'},partial=True)

def parse(caption):
    title = caption.find('a',{"class":"title"}).text
    description = caption.find('p').text
    price = caption.find('h4',{"class":"price"}).text
    
                  
    return title,description,price
                  
(pd.DataFrame([parse(caption) for caption in captions]))

从上面的代码中,我们在标签中使用了类的部分名称,并将部分参数设置为True ,因为我们可能不知道我们要检索数据的类的确切名称。它提取了属于类caption 的片剂的所有三个元素(标题、描述和价格)的数据。为了在一个框架中显示数据,我们在Python pandas库中解析提取的数据,pd

输出。

Output

完整的代码。

from gazpacho import get , Soup
import pandas as pd
url ='https://webscraper.io/test-sites/e-commerce/static/computers/tablets'
html = get(url)
soup = Soup(html)
captions= soup.find("div", {'class':'caption'},partial=True)

def parse(caption):
    title = caption.find('a',{"class":"title"}).text
    description = caption.find('p').text
    price = caption.find('h4',{"class":"price"}).text
    
                  
    return title,description,price
                  
(pd.DataFrame([parse(caption) for caption in captions]))

结论

在本教程中,很明显,当涉及到从各种网站和网页中提取数据时,网络刮削过程是至关重要和有帮助的。使用现代的Gazpacho库,它变得如此简单和快速,它比其他库有优势,因为所有的任务都是通过一个库导入完成的。

我们已经了解了网络刮削及其在现实生活中的应用,探索了用于网络刮削的不同Python库,并了解了我们如何使用Gazpacho库来刮削网络数据。