Python-Web-爬虫实用指南(一)

您可以从www.packt.com的帐户中下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packt.com/support并注册,以便文件直接通过电子邮件发送给您。

您可以按照以下步骤下载代码文件:

  1. www.packt.com上登录或注册。

  2. 选择“支持”选项卡。

  3. 点击“代码下载和勘误”。

  4. 在“搜索”框中输入书名,然后按照屏幕上的说明操作。

下载文件后,请确保使用最新版本的解压缩或提取文件夹:

  • WinRAR/7-Zip for Windows

  • Zipeg/iZip/UnRarX for Mac

  • 7-Zip/PeaZip for Linux

该书的代码包也托管在 GitHub 上,网址为github.com/PacktPublishing/Hands-On-Web-Scraping-with-Python。如果代码有更新,将在现有的 GitHub 存储库上进行更新。

我们还有来自丰富书籍和视频目录的其他代码包,可以在github.com/PacktPublishing/上找到。去看看吧!

下载彩色图片

我们还提供了一份 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图片。您可以在这里下载:www.packtpub.com/sites/default/files/downloads/9781789533392_ColorImages.pdf

使用的约定

本书中使用了许多文本约定。

CodeInText:表示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。这是一个例子:“<p><h1> HTML 元素包含与它们一起的一般文本信息(元素内容)。”

代码块设置如下:

当我们希望引起您对代码块的特定部分的注意时,相关行或项目将以粗体显示: 

 任何命令行输入或输出都以以下方式编写:

 

粗体:表示新术语、重要单词或屏幕上看到的单词。例如,菜单或对话框中的单词会以这样的方式出现在文本中。这是一个例子:“如果通过 Chrome 菜单访问开发者工具,请单击更多工具|开发者工具”

警告或重要说明会以这种方式出现。提示和技巧会以这种方式出现。

第一部分:网络抓取简介

在本节中,您将获得有关网络抓取(抓取要求、数据重要性)、网页内容(模式和布局)、Python 编程和库(基础和高级)、以及数据管理技术(文件处理和数据库)的概述。

本节包括以下章节:

  • 第一章,网络抓取基础

第一章:网络爬虫基础知识

在本章中,我们将学习和探讨与网络爬取和基于网络的技术相关的某些基本概念,假设您没有网络爬取的先验经验。

因此,让我们从以下一些问题开始:

  • 为什么会出现对数据的不断增长需求?

  • 我们将如何管理和满足来自“万维网”(WWW)资源的数据需求?

网络爬虫解决了这两个问题,因为它提供了各种工具和技术,可以用来提取数据或协助信息检索。无论是基于网络的结构化数据还是非结构化数据,我们都可以使用网络爬虫过程来提取数据,并将其用于研究、分析、个人收藏、信息提取、知识发现等多种目的。

我们将学习通用技术,用于从网络中查找数据,并在接下来的章节中使用 Python 编程语言深入探讨这些技术。

在本章中,我们将涵盖以下主题:

  • 网络爬虫介绍

  • 了解网络开发和技术

  • 数据查找技术

网络爬虫介绍

爬取是从网络中提取、复制、筛选或收集数据的过程。从网络(通常称为网站、网页或与互联网相关的资源)中提取或提取数据通常被称为“网络爬取”。

网络爬虫是一种适用于特定需求的从网络中提取数据的过程。数据收集和分析,以及其在信息和决策制定中的参与,以及与研究相关的活动,使得爬取过程对所有类型的行业都很敏感。

互联网及其资源的普及每天都在引起信息领域的演变,这也导致了对原始数据的不断增长需求。数据是科学、技术和管理领域的基本需求。收集或组织的数据经过不同程度的逻辑处理,以获取信息并获得进一步的见解。

网络爬虫提供了用于根据个人或业务需求从网站收集数据的工具和技术,但需要考虑许多法律因素。

在执行爬取任务之前,有许多法律因素需要考虑。大多数网站包含诸如“隐私政策”、“关于我们”和“条款和条件”等页面,其中提供了法律条款、禁止内容政策和一般信息。在计划从网站进行任何爬取和抓取活动之前,开发者有道德责任遵守这些政策。

在本书的各章中,爬取和抓取两个术语通常可以互换使用。抓取,也称为蜘蛛,是用于浏览网站链接的过程,通常由搜索引擎用于索引目的,而爬取大多与从网站中提取内容相关。

了解网络开发和技术

网页不仅仅是一个文档容器。当今计算和网络技术的快速发展已经将网络转变为动态和实时的信息来源。

在我们这一端,我们(用户)使用网络浏览器(如 Google Chrome、Firefox Mozilla、Internet Explorer 和 Safari)来从网络中获取信息。网络浏览器为用户提供各种基于文档的功能,并包含对网页开发人员通常有用的应用级功能。

用户通过浏览器查看或浏览的网页不仅仅是单个文档。存在各种技术可用于开发网站或网页。网页是包含 HTML 标记块的文档。大多数情况下,它是由各种子块构建而成,这些子块作为依赖或独立组件来自各种相互关联的技术,包括 JavaScript 和 CSS。

对网页的一般概念和网页开发技术的理解,以及网页内部的技术,将在抓取过程中提供更多的灵活性和控制。很多时候,开发人员还可以使用反向工程技术。

反向工程是一种涉及分解和检查构建某些产品所需概念的活动。有关反向工程的更多信息,请参阅 GlobalSpec 文章反向工程是如何工作的?,网址为insights.globalspec.com/article/7367/how-does-reverse-engineering-work

在这里,我们将介绍和探讨一些可以帮助和指导我们进行数据提取过程的技术。

HTTP

超文本传输协议HTTP)是一种应用协议,用于在客户端和 Web 服务器之间传输资源,例如 HTML 文档。HTTP 是一种遵循客户端-服务器模型的无状态协议。客户端(Web 浏览器)和 Web 服务器使用 HTTP 请求和 HTTP 响应进行通信或交换信息:

HTTP(客户端-服务器通信)

通过 HTTP 请求或 HTTP 方法,客户端或浏览器向服务器提交请求。有各种方法(也称为 HTTP 请求方法)可以提交请求,例如GETPOSTPUT

  • GET:这是请求信息的常见方法。它被认为是一种安全方法,因为资源状态不会被改变。此外,它用于提供查询字符串,例如http://www.test-domain.com/,根据请求中发送的iddisplay参数从服务器请求信息。

  • POST:用于向服务器发出安全请求。所请求的资源状态可以被改变。发送到请求的 URL 的数据不会显示在 URL 中,而是与请求主体一起传输。它用于以安全的方式向服务器提交信息,例如登录和用户注册。

使用浏览器开发者工具显示的以下屏幕截图,可以显示请求方法以及其他与 HTTP 相关的信息:

 

一般的 HTTP 头(使用浏览器开发者工具访问)

我们将在第二章中更多地探讨 HTTP 方法,

Python 和 Web-使用 urllib 和 Requests,在实现 HTTP 方法部分。

HTTP 头在请求或响应过程中向客户端或服务器传递附加信息。头通常是客户端和服务器在通信过程中传输的信息的名称-值对,并且通常分为请求头和响应头:

  • 请求头:这些是用于发出请求的头。在发出请求时,会向服务器提供诸如语言和编码请求 -*、引用者、cookie、与浏览器相关的信息等信息。以下屏幕截图显示了在向www.python.org发出请求时从浏览器开发者工具中获取的请求头:

请求头(使用浏览器开发者工具访问)

  • 响应头:这些头包含有关服务器响应的信息。响应头通常包含有关响应的信息(包括大小、类型和日期)以及服务器状态。以下屏幕截图显示了在向www.python.org发出请求后从浏览器开发者工具中获取的响应头:

 

 

响应头(使用浏览器开发者工具访问)

在之前的屏幕截图中看到的信息是在对www.python.org发出的请求期间捕获的。

在向服务器发出请求时,还可以提供所需的 HTTP 头部。通常可以使用 HTTP 头部信息来探索与请求 URL、请求方法、状态代码、请求头部、查询字符串参数、cookie、POST参数和服务器详细信息相关的信息。

通过HTTP 响应,服务器处理发送到它的请求,有时也处理指定的 HTTP 头部。当接收并处理请求时,它将其响应返回给浏览器。

响应包含状态代码,其含义可以使用开发者工具来查看,就像在之前的屏幕截图中看到的那样。以下列表包含一些状态代码以及一些简要信息:

  • 200(OK,请求成功)

  • 404(未找到;请求的资源找不到)

  • 500(内部服务器错误)

  • 204(无内容发送)

  • 401(未经授权的请求已发送到服务器)

有关 HTTP、HTTP 响应和状态代码的更多信息,请参阅官方文档www.w3.org/Protocols/developer.mozilla.org/en-US/docs/Web/HTTP/Status

HTTP cookie是服务器发送给浏览器的数据。cookie 是网站在您的系统或计算机上生成和存储的数据。cookie 中的数据有助于识别用户对网站的 HTTP 请求。cookie 包含有关会话管理、用户偏好和用户行为的信息。

服务器根据存储在 cookie 中的信息来识别并与浏览器通信。cookie 中存储的数据帮助网站访问和传输某些保存的值,如会话 ID、过期日期和时间等,从而在 web 请求和响应之间提供快速交互:

 

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
爬虫程序 网页文字抓取器 、软件特色: 1. 图形化的采集任务定义界面 你只需在软件内嵌的浏览器内用鼠标点选你要采集的网页内容即可配置采集任务,无需像其它同类软件一样面对复杂的网页源码去寻找采集规则。可以说是所见即所得的采集任务配置界面。 2. 创新的内容定位方式,定位更准确、稳定 同类软件基本上都是根据网页源码中的前导标记和结束标记进行内容定位,这样一来,用户就不得不自己去面对网页制作人员才需要面对的HTML代码,付出更多额外的学习时间才能掌握软件的使用。同时,只要网页内容稍有变更(简单的如改变一下文字的颜色)定位标记即极有可能失效,导致采集失败。我们经过艰难的技术攻关,实现了全新的定位方式:结构定位和相对标志定位。大家都知道,一个网站的风格基本上是固定的,其同类网页内容的编排布局基本相同。这就是结构定位可行之处。当然基本相同不等于100%相同,不过,我们攻克了技术难关,消除了这些障碍。我们的定位方式的优势在于:1.用户只需用鼠标点击就可以配置采集任务,实现所见即所得的采集任务配置界面;2.网页内容的变化(如文字增减、变更,文字颜色、字体的变化等)不会影响采集的准确性。 3. 支持任务嵌套,可采集无限级的页面内容 只需在当前任务的页面中选择指向你要采集的下级页面的链接,即可建立嵌套任务,采集下级页面的内容,且嵌套级数不限。这种便利都得益于我们全新的内容定位方式和图形化的采集任务配置界面。 4. 可同时采集任何内容 除了最基本的文字、图片、文件外,还可以采集针对具体HTML标签的源码、属性值等。 5. 强大的信息自动再加工能力 你可以在配置任务的时候,指定对采集到的内容进行任何的替换、筛选。 6. 可对采集到的内容进行自动排序 7. 支持采集结果保存到EXCEL和任意格式的文件 支持自定义文件模板。 8. 支持实时保存到数据库 支持ACCESS、SQLSERVER、MYSQL数据库(后续版本还将支持更多类型的数据库)。 9. 支持实时上传到网站服务器 支持POST和GET方式,可自定义上传参数,模拟人工提交 10. 支持实时保存到任意格式的文件 支持自定义模板,支持按记录保存和将多个记录保存到单个文件,支持大纲、明细式的保存(所有记录的某些内容保存到一个大纲文件中,然后每条记录又单独保存到一个文件。 11. 支持多种灵活的任务调度方式,实现无人值守采集 12. 支持多任务,支持任务导入和导出
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值