爬虫概述
我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。 把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息 。 可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取下来了 。
获取网页
爬虫首先要做的工作就是获取网页,这里就是获取网页的源代码 。我们不可能去网页把那些源代码复制过来吧,在Python里面我们有很多第三方库来帮助我们解决这些繁琐的问题。
提取信息
获取网页源代码后,接下来就是分析网页源代码,从中提取我们想要的数据 。首先,最通用的方法便是采用正则表达式提取,这是一个万能的方法,但是在构造正则表达式时比较复杂且容易出错。(之前我们也说过这个东西)
这个时候我就需要一些Python第三方库来解析这些数据,如 Beautiful Soup 、 pyquery 、 lxml 等 。提取信息是爬虫非常重要的部分,它可以使杂乱的数据变得条理清晰 ,以便我们后续处理和分析数据。
保存数据
提取信息后,我们一般会将提取到的数据保存到某处以便后续使用 。 这里保存形式有多种多样,如可以简单保存为 TXT 文本或 JSON 文本,也可以保存到数据库,如 MySQL 和 MongoDB 等 ,也可保存至远程服务器,如借助 SFTP 进行操作等。
基本的爬虫原理和思路也就是这样,我们平时自己在搭建框架的时候就要这种思想。
静态网页和动态网页
静态网页通过最简单的一些HTML代码进行搭建,在通过一些服务器进行实现,虽然简单,但是也有缺点可维护性差,灵活性差。因此,动态网页应运而生,它可以动态解析 URL 中参数的变化,关联数据库井动态呈现不同的页面内容,非常灵活多变。 我们现在遇到的大多数网站都是动态阿站,它们不再是一个简单的 HTML ,而是可能由 JSP 、 PHP 、 Python 等语言编写的,其功能比静态网页强大和丰富太多了 。
会话
会话,其本来的含义是指有始有终的一系列动作/消息 。而在 Web 中,会话对象用来存储特定用户会话所需的属性及配置信息 。 这样,当用户在应用程序的 Web 页之间跳转时,存储在会话对象中的变量将不会丢失,而是在整个用户会话中一直存在下去 。当用户请求来自应用程序的 Web 页时如果该用户还没有会话, 则 Web 服务器将自动创建一个会话对象。 当会话过期或被放弃后,服务器将终止该会话。
cookies
这个概念相信大家都有体验,在我们登陆网站的时候,经常会提醒我们去保存密码,下一次登陆就不用输入自己的密码了。这个就是利用了cookies的和会话。
代理
前方高能
我们在做爬虫的过程巾经常会遇到这样的情况 , 最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden , 这时候打开网页一看 ,可能会看到“您的 IP 访问频率太高”这样的提示 。 出现这种现象的原因是网站采取了一些反爬虫措施。比如,服务器会检测某个 IP 在单位时间内的请求次数,如果超过了这个阔值,就会直接拒绝服务,返问一些错误信息,这种情况可以称为封 IP 。这个时候就凉了,电脑IP被封了就很麻烦的,通常我们在写一些高级爬虫的时候,我们需要去用代理IP,或者延时访问。
在这里我建议大家不要去网上随意复制运行一些爬虫项目,说不定你看懂别人的代码,如果没有加延时,或者其他反爬措施,这样对你自己也不安全,对网站也是一种负担!
基本原理
通过伪装自己的IP,这个时候我们设置了代理服务器。在访问的时候,我们就不是直接通过web访问的,由代理服务器再发送给 Web 服务器,接着由代理服务器再把 Web 服务器返回的响应转发给本机。 就算IP被识别了也没有关系,因为我们使用并不是自己的IP。
注意
使用网上的免费代理: 最好使用高匿代理 , 另外可用的代理不多,需要在使用前筛选一下可用代理,也可以进一步维护一个代理池 。
互联网上存在许多代理商,可以付费使用, 质量比免费代理好很多。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试