爬虫得基本原理

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

爬虫的概述

1.获取网页

爬虫首先要做的,就是获取网页的源代码。然后从中提取想要的信息。

讲了请求和响应的概念,向网站的服务器发送一个请求,返回的响应体便是网页源代码

最关键的部分就是构造一个请求并发送给服务器,然后接收到响应并将其解析出来

Python提供了许多库来帮助我们实现这个操作,如 urllib、 requests 等。 我们可以用这 些库来帮助我们实现 HTTP 请求操作,请求和响应都可以用类库提供的数据结构来表示,得到响应之 后只需要解析数据结构中的 Body 部分即可,即得到网页的源代码,这样我们可以用程序来实现获取 网页的过程了。

2.提取信息

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

另外,由于网页的结构有一定的规则 ,所以还有一些根据网页节点属性、 css 选择器或 XPath来 提取网页信息的库,如Beautiful Soup、 pyquery、 lxml等。 使用这些库,我们可以高效快速地从中提 取网页信息,如节点的属性、 文本值等。

注:提取信息是爬虫非常重要的部分,可以便于我们后续处理数据。

3.保存数据

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

4.自动化程序

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

能抓什么样的数据

最常见的是去抓取HTML源码(数据不大手动就可以下载)

有些api接口返回的数据为json字符串,这更方便抓了(哈哈) (json格式是将信息按一定的规律排序)

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

JavaScript渲染页面

用 时lib 或 requ曰“抓取网页时,得到的游、代码实际和浏览器中看到的不一样。 个非常常见的问题。 现在网页越来越多地采用 Ajax、前端模块化工具来构建,整个网页可 能都是由 JavaScript 渲染出来的,也就是说原始的 HTML代码就是一个空壳。 html body 节点里面只有一个 id 为 container 的节点,但是需要注意在 body 节点后引入了 app. ,它便 负责整个网站的渲染。

方法: 对于这样的情 况,我们可以分析其后台 Ajax 接口,也可使用 Selenium、 Splash这样的库来实现模拟 JavaScript渲染。

posted @ 2020-03-28 14:46  ACWink  阅读(214)  评论(0编辑  收藏  举报