Python Web Scraping 简明教程

Python Web Scraping - Introduction

Web 抓取是从 Web 中提取信息的自动化过程。本章将向您提供有关 Web 抓取、它与 Web 爬网的比较以及为什么您应该选择 Web 抓取的深入了解。您还将了解 Web 抓取工具的组成部分和工作原理。

What is Web Scraping?

“抓取”一词的字典含义是指从 Web 上获取某些内容。这里出现两个问题:我们可以从网络上获取什么以及如何获取。

第一个问题的答案是 ‘data’ 。数据对于任何程序员来说都是必不可少的,每个编程项目的基本要求是大量有用的数据。

第二个问题的答案有点棘手,因为获取数据的方法有很多。通常,我们可能从数据库或数据文件和其他来源获取数据。但是,如果我们需要大量可在线获取的数据怎么办?获取此类数据的一种方法是手动搜索(在 Web 浏览器中点击)并保存(复制粘贴到电子表格或文件)所需的数据。这种方法相当乏味且耗时。获取此类数据的另一种方法是使用 web scraping

Web scraping ,也称为 web data miningweb harvesting ,是构建一个代理的过程,该代理可以自动从 Web 中提取、解析、下载和组织有用的信息。换句话说,我们可以说,Web 抓取软件将自动加载和提取来自多个网站的数据,而不是手动从网站中保存数据,并根据我们的要求进行提取。

Origin of Web Scraping

Web 抓取的起源是屏幕抓取,它用于集成非基于 Web 的应用程序或本机 Windows 应用程序。最初,屏幕抓取是在万维网 (WWW) 广泛使用之前使用的,但它无法扩展 WWW。这使得有必要将屏幕抓取方法自动化, ‘Web Scraping’ 技术应运而生。

Web Crawling v/s Web Scraping

术语 Web 爬网和抓取经常互换使用,因为它们的基本概念是提取数据。但是,它们是彼此不同的。我们可以从它们的定义中理解基本差异。

网络爬取基本上用于使用机器人(又名爬虫)对页面上的信息进行索引。它也称为 indexing 。另一方面,网络抓取是一种使用机器人(又名抓取器)提取信息自动化方式。它也称为 data extraction

为了理解这两个术语之间的差异,让我们看看下面给出的比较表 -

Web Crawling

Web Scraping

是指下载和存储大量网站的内容。

是指通过使用特定于站点的结构从网站中提取单个数据元素。

大部分是进行大规模。

可以在任何规模实施。

Yields generic information.

Yields specific information.

被 Google、必应、雅虎等主要搜索引擎使用。 Googlebot 是网络爬虫的一个示例。

使用网络抓取提取的信息可用于在一些其他网站中复制,或可用于执行数据分析。例如,数据元素可以是姓名、地址、价格等。

Uses of Web Scraping

使用网络抓取的原因和用途和万维网的用途一样无穷无尽。网络抓取器可以像人类一样执行任何操作,比如在线订餐、为你扫描在线购物网站,并在它们可用时购买比赛门票。下面讨论了网络抓取的一些重要用途 -

  1. E-commerce Websites - 网络抓取器可以从各种电子商务网站收集特别与特定产品价格相关的数据进行比较。

  2. Content Aggregators - 内容聚合器(如新闻聚合器和工作聚合器)广泛使用网络抓取,以向其用户提供最新数据。

  3. Marketing and Sales Campaigns - 网络抓取器可用于获取电子邮件、电话号码等数据,为销售和营销活动服务。

  4. Search Engine Optimization (SEO) - SEMRush、Majestic 等 SEO 工具广泛使用网络抓取,以告诉企业他们在对他们很重要的搜索关键词中排名如何。

  5. Data for Machine Learning Projects - 检索用于机器学习项目的数据依赖于网络抓取。

Data for Research - 研究人员可以通过这种自动化过程节省时间,为其研究工作收集有用的数据。

Components of a Web Scraper

网络抓取器包括以下组件 -

Web Crawler Module

网络抓取器的一个非常必要的组件网络爬虫模块,用于通过对 URL 发出 HTTP 或 HTTPS 请求在目标网站上导航。抓取器下载非结构化数据(HTML 内容)并将其传递给提取器(下一个模块)。

Extractor

提取器处理提取的 HTML 内容并将数据提取为半结构化格式。这也称为解析器模块,并使用正则表达式、HTML 解析、DOM 解析或人工智能等不同的解析技术来运行。

Data Transformation and Cleaning Module

提取的上述数据不适合直接使用。它必须通过一些清理模块,以便我们能使用它。字符串操作或正则表达式等方法可用于此目的。请注意,提取和转换也可以一步完成。

Storage Module

在提取数据之后,我们需要根据我们的需求来存储数据。存储模块将以标准格式输出数据,该数据可以存储在数据库或 JSON 或 CSV 格式中。

Working of a Web Scraper

网络抓取可定义为用于下载多个网页的内容并从中提取数据的一个软件或脚本。

web scraper

我们从上图的图表中,可以简单几个步骤了解网络抓取的工作原理。

Step 1: Downloading Contents from Web Pages

在此步骤中,网络抓取将从多个网页中下载所请求的内容。

Step 2: Extracting Data

网站上的数据是 HTML 格式,且大部分是非结构化的。因此,在此步骤中,网络抓取将从下载的内容中解析并提取结构化的数据。

Step 3: Storing the Data

此处,网络抓取将存储和保存以 CSV、JSON 或者数据库等格式提取的数据。

Step 4: Analyzing the Data

在完成所有这些步骤后,网络抓取将分析所获得的数据。