iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3网络爬虫实战-17、爬虫基
  • 867
分享到

Python3网络爬虫实战-17、爬虫基

爬虫实战网络 2023-01-31 07:01:43 867人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

爬虫,即网络爬虫,我们可以把互联网就比作一张大网,而爬虫便是在网上爬行的蜘蛛,我们可以把网的节点比做一个个网页,爬虫爬到这就相当于访问了该页面获取了其信息,节点间的连线可以比做网页与网页之间的链接关系,这样蜘蛛通过一个节点后可以顺着节点连线

爬虫,即网络爬虫,我们可以把互联网就比作一张大网,而爬虫便是在网上爬行的蜘蛛,我们可以把网的节点比做一个个网页,爬虫爬到这就相当于访问了该页面获取了其信息,节点间的连线可以比做网页与网页之间的链接关系,这样蜘蛛通过一个节点后可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,这样网站的数据就可以被抓取下来了。

可能上面的说明还是难以具体地描述爬虫究竟是个什么,简单来说,爬虫就是获取网页并提取和保存信息的自动化程序,接下来对各个点进行说明:

获取网页

爬虫首先要做的工作就是获取网页,在这里获取网页即获取网页的源代码,源代码里面必然包含了网页的部分有用的信息,所以只要把源代码获取下来了,就可以从中提取我们想要的信息了。

在前面我们讲到了 Request 和 Response 的概念,我们向网站的服务器发送一个 Request,返回的 Response 的 Body 便是网页源代码。所以最关键的部分就是构造一个 Request 并发送给服务器,然后接收到 Response 并将其解析出来,那这个流程可以怎样来实现呢?总不能手工去截取网页源码把?

不用担心,python 里面提供了许多库来帮助我们实现这个操作,如 Urllib、Requests 等,我们可以用这些库来帮助我们实现 Http 请求操作,Request 和 Response 都可以用类库提供的数据结构来表示,得到 Response 之后只需要解析数据结构中的 Body 部分即可,即得到网页的源代码,这样我们可以用程序来实现获取网页的过程了。
提取信息

我们在第一步获取了网页源代码之后,接下来的工作就是分析网页源代码,从中提取我们想要的数据,首先最通用的方法便是采用正则表达式提取,这是一个万能的方法,但是在构造正则表达式的时候比较复杂且容易出错。

另外由于网页的结构是有一定规则的,所以还有一些根据网页节点属性、CSS 选择器或 XPath 来提取网页信息的库,如 BeautifulSoup、PyQuery、LXML 等,使用这些库可以高效快速地从中提取网页信息,如节点的属性、文本值等内容。

提取信息是爬虫非常重要的部分,它可以使杂乱的数据变得清晰条理,以便于我们后续在对数据进行处理和分析。

保存数据

提取信息之后我们一般会将提取到的数据保存到某处以便后续数据处理使用。保存形式有多种多样,如可以简单保存为 TXT 文本或 JSON 文本,也可以保存到数据库,如 MysqlmongoDB 等,也可保存至远程服务器,如借助 Sftp 进行操作等。

自动化程序

说到自动化程序,意思即是说爬虫可以代替人来完成这些操作。首先我们手工当然是可以提取这些信息的,但是当量特别大或者想快速获取大量数据的话,肯定还是借助于程序。所以爬虫就是代替我们来完成这份爬取数据的工作的自动化程序,它可以在抓取过程中进行各种异常处理、错误重试等操作,确保爬取持续高效地运行。

在网页中我们能看到各种各样的信息,最常见的便是常规网页,其都对应着 html 代码,而最常见的抓取便是抓取 HTML 源代码。

另外可能有些网页返回的不是 HTML 代码,而是返回一个 json 字符串api 接口大多采用这样的形式,方便数据的传输和解析,这种数据同样可以抓取,而且数据提取更加方便。

此外我们还可以看到各种二进制数据,如图片、视频、音频等等,我们可以利用爬虫将它们的二进制数据抓取下来,然后保存成对应的文件名即可。

另外我们还可以看到各种扩展名的文件,如 CSS、javascript、配置文件等等,这些其实也是最普通的文件,只要在浏览器里面访问到,我们就可以将其抓取下来。

以上的内容其实都对应着各自的URL,是基于 HTTP 或 https 协议的,只要是这种数据爬虫都可以进行抓取。

有时候我们在用 Urllib 或 Requests 抓取网页时,得到的源代码实际和浏览器中看到的是不一样的。

这个问题是一个非常常见的问题,现在网页越来越多地采用 ajax前端模块化工具来构建网页,整个网页可能都是由 JavaScript 渲染出来的,意思就是说原始的 HTML 代码就是一个空壳,例如:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>This is a Demo</title>
    </head>
    <body>
        <div id="container">
        </div>
    </body>
    <script src="app.js"></script>
</html>
Python资源分享qun 784758214 ,内有安装包,pdf学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

body 节点里面只有一个 id 为 container 的节点,但是注意到在 body 节点后引入了一个 app.js,这个便负责了整个网站的渲染。

在浏览器打开这个页面时,首先会加载这个 HTML 内容,接着浏览器会发现其中里面引入了一个 app.js 文件,然后浏览器便会接着去请求这个文件,获取到该文件之后便会执行其中的 JavaScript 代码,而 JavaScript 则会改变 HTML 中的节点,向内添加内容,最后得到完整的页面。

但是在用 Urllib 或 Requests 等库来请求当前页面时,我们得到的只是这个 HTML 代码,它不会帮助我们去继续加载这个 JavaScript 文件,这样也就看不到浏览器中看到的内容了。

这也解释了为什么有时我们得到的源代码和浏览器中看到的是不一样的。

所以使用基本 HTTP 请求库得到的结果源代码可能跟浏览器中的页面源代码不太一样。对于这样的情况,我们可以分析其后台 Ajax 接口,也可使用 selenium、Splash 这样的库来实现模拟 JavaScript 渲染,这样我们便可以爬取 JavaScript 渲染的网页的内容了。

在后文我们会详细介绍对于 JavaScript 渲染的网页的采集方法。

本节介绍了爬虫的一些基本原理,了解了如上内容可以帮助我们在后面编写爬虫的时候更加得心应手。

--结束END--

本文标题: Python3网络爬虫实战-17、爬虫基

本文链接: https://www.lsjlt.com/news/192128.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3网络爬虫实战-17、爬虫基
    爬虫,即网络爬虫,我们可以把互联网就比作一张大网,而爬虫便是在网上爬行的蜘蛛,我们可以把网的节点比做一个个网页,爬虫爬到这就相当于访问了该页面获取了其信息,节点间的连线可以比做网页与网页之间的链接关系,这样蜘蛛通过一个节点后可以顺着节点连线...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-15、爬虫基
    在写爬虫之前,还是需要了解一些爬虫的基础知识,如 HTTP 原理、网页的基础知识、爬虫的基本原理、Cookies 基本原理等。 那么本章内容就对一些在做爬虫之前所需要的基础知识做一些简单的总结。 在本节我们会详细了解 HTTP 的基本原理...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-11、爬虫框
    ScrapySplash 是一个 Scrapy 中支持 JavaScript 渲染的工具,本节来介绍一下它的安装方式。ScrapySplash 的安装分为两部分,一个是是 Splash 服务的安装,安装方式是通过 Docker,安装之后会...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-10、爬虫框
    我们直接用 Requests、Selenium 等库写爬虫,如果爬取量不是太大,速度要求不高,是完全可以满足需求的。但是写多了会发现其内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,久...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-9、APP爬
    Appium 是移动端的自动化测试工具,类似于前面所说的 Selenium,利用它我们可以驱动 Android、iOS 等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方网站为:http://appium.io/,本节来了解一下 ...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-7、APP爬
    MitmProxy 是一个支持 HTTP 和 HTTPS 的抓包程序,类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作。同时 MitmProxy 还有两个关联组件,一个是 MitmDump,它是 MitmProx...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-8、APP爬
    MitmProxy 是一个支持 HTTP 和 HTTPS 的抓包程序,类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作。同时 MitmProxy 还有两个关联组件,一个是 MitmDump,它是 MitmProx...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-6、APP爬
    除了 Web 网页,爬虫也可以对 APP 的数据进行抓取,APP 中的页面要加载出来,首先需要获取数据,那么这些数据一般是通过请求服务器的接口来获取的,由于 APP 端没有像浏览器一样的开发者工具直接比较直观地看到后台的请求,所以对 APP...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-19、代理基
    我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden,这时候打开网页一看,可能会看到“您的 IP 访问频率太高”这样的提示。出...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-30、PyQ
    在上一节我们介绍了 BeautifulSoup 的使用,它是一个非常强大的网页解析库,可有没有觉得它的一些方法使用有点不适应?有没有觉得它的 CSS 选择器功能没有那么强大? 如果你对 Web 有所涉及,如果你比较喜欢用 CSS 选择器,如...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-18、Ses
    在浏览网站的过程中我们经常会遇到需要登录的情况,有些页面只有登录之后我们才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就会需要重新登录。还有一些网站有时在我们打开浏览器的时候就自动登录了,而且很长的时间都不会失效,这种...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-25、req
    在前面一节我们了解了 Requests 的基本用法,如基本的 GET、POST 请求以及 Response 对象的用法,本节我们再来了解下 Requests 的一些高级用法,如文件上传,代理设置,Cookies 设置等等。 我们知道 Re...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-27、Req
    本节我们利用 Requests 和正则表达式来抓取猫眼电影 TOP100 的相关内容,Requests 相较于 Urllib 使用更加方便,而目前我们还没有系统学习 HTML 解析库,所以可能对 HTML 的解析库不是很了解,所以本节我们选...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-16、Web
    我们平时用浏览器访问网站的时候,一个个站点形形×××,页面也各不相同,但有没有想过它是为何才能呈现出这个样子的?那么本节我们就来了解一下网页的基本组成、结构、节点等内容。 网页可以分为三大部分,HTML、CSS、JavaScript,我们...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-24、req
    在前面一节我们了解了 Urllib 的基本用法,但是其中确实有不方便的地方。比如处理网页验证、处理 Cookies 等等,需要写 Opener、Handler 来进行处理。为了更加方便地实现这些操作,在这里就有了更为强大的库 Request...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-5、Web库
    Web 想必我们都不陌生,我们现在日常访问的网站都是 Web 服务程序搭建而成的,Python 同样不例外也有一些这样的 Web 服务程序,比如 Flask、Django 等,我们可以拿它来开发网站,开发接口等等。 在本书中,我们主要要用到...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫(十一):爬虫黑科
    原文链接: Jack-Cui,http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 1 前言 近期,有些朋友问我一些关...
    99+
    2023-01-31
    爬虫 网络
  • Python3网络爬虫实战-21、使用U
    在前面一节我们了解了 Request 的发送过程,但是在网络情况不好的情况下,出现了异常怎么办呢?这时如果我们不处理这些异常,程序很可能报错而终止运行,所以异常处理还是十分有必要的。 Urllib 的 error 模块定义了由 reques...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-23、使用U
    利用 Urllib 的 robotparser 模块我们可以实现网站 Robots 协议的分析,本节我们来简单了解一下它的用法。 Robots 协议也被称作爬虫协议、机器人协议,它的全名叫做网络爬虫排除标准(Robots Exclusio...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-13、部署相
    在将 Scrapy 代码部署到远程 Scrapyd 的时候,其第一步就是要将代码打包为 Egg 文件,其次需要将 Egg 文件上传到远程主机,这个过程如果我们用程序来实现是完全可以的,但是我们并不需要做这些工作,因为 ScrapydCli...
    99+
    2023-01-31
    爬虫 实战 网络
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作