实战Python网络爬虫笔记之一基础知识

一,爬虫类型

依系统结构和开发技术可分4类:
通用网络爬虫
聚焦网络爬虫
增量式网络爬虫
深层网络爬虫

通用网络爬虫又称全网爬虫,如百度,谷歌,必应等搜索引擎
特点:
1,算法不对外公布;
2,爬取范围和数量巨大,爬取速度和存储空间要求高,爬取页面的顺序要求相对较低;
3,待刷新页面多,通常采用并行工作方式,但需要较长时间才能刷新一次页面;
4,适用于为搜索引擎搜索广泛的需求,

聚焦网络爬虫又称主题网络爬虫,是选择性的爬取需要的主题相关页面

增量式网络爬虫是对已下载网页采取增量式更新和只爬取新产生或已经发生变化的网页的爬虫,
它不重新下载没有变化的页面,可有效减少数据下载量,及时更新已爬取的网页,减小时间和空间上的耗费,
但增加了爬取算法的复杂度和实现难度,这类不太普及。

深层网络爬虫是大部分内容不能通过静态URL获取的,隐藏在搜索表单后的,只有用户提交一些关键词才能获得的网络页面。
比如一些需要用户登录或通过提交表单实现提交数据。此类为研究重点。

二,爬虫原理

#通用爬虫实现的原理及过程

初始URL
def inter_worm (URL)
if 待捉取URL:
	读取URL并解释网页内容
	数据入库
	获取新URL
	if 获取新URL:
		inter_worm(URL)
	if 满足停止条件:	
		结束
if 满足停止条件:	
	结束

聚焦网络爬虫执行原理和过程与通用爬虫大致相同,在其基础上增加两个步骤:
定义爬取目标和筛选过滤URL

#聚焦网络爬虫实现原理
1,制定爬取方案;
2,设定初始的URL;
3,依据初始URL抓取页面,并获得新的URL;
4,从新的URL中过滤掉与需求无关的URL,将过滤后的URL放到URL队列中;
5,依据搜索算法确定URL优先级,并确定下一部要爬取的URL地址;
6,得到新的URL,并重复爬取过程;
7,满足设置的停止条件或无法获取新的URL地址时,停止爬行。

初始URL
def inter_worm (URL)
if 非空(待捉取URL):
	读取URL并解释网页内容
	数据入库
	获取新URL
	if 获取新URL:
		筛选URL
		inter_worm(URL)
if 符合(待捉取URL):
	筛选URL
	inter_worm(URL)
if 空(待捉取URL):
	结束

三,爬虫的搜索策略

1,深度优先搜索
2,宽度优先搜索(最佳策略)
3,最好优先原则(聚焦爬虫的策略)

四,网络爬虫的合法性

1,利用爬虫技术与黑客技术结合,攻击网站后台,从而窃取后台数据;
2,利用爬虫恶意攻击网站,造成网站系统瘫痪。

五,爬虫开发流程

1,需求说明;
2,爬虫计划开发;
3,爬虫的功能开发;
4,爬虫的部署与交付。

六,爬虫开发基础

HTTP与HTTPS

HTTP(Hyper Text Transfer Protocol,超文本传输协议)是一个客户端和服务器端请求和应答的标准(TCP)
客户端是终端用户,服务器端是网站。通过使用Web浏览器,网络爬虫或其他工具,客户端发起一个到服务器上
指定端口(默认为80)的HTTP请求,这个客户端叫用户代理(User Agent),响应的服务器上存储着资源为源服务器(Origin Server)
在浏览器地址栏输入的网站地址叫URL(Uniform Resource Locator,统一资源定位符)
HTTP协议传输的数据都是未加密的明文数据,为了保证这些隐私,网景公司设计了SSL(Secure Sockets Layer)协议
用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS.
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),HTTP+SSL/TLS
SSL中使用的算法:
非对称加密算法 RSA,DSA/DSS(握手过程加密)
对称加密 AES,RC4,3DES(传输数据加密)
HASH算法 MD5,SHA1,SHA256(验证数据完整性)

Chrome
Chrome开发者工具的主要作用是进行Web开发调试,应熟练掌握Elements,Console和Network.
Network是核心,百分之九十网站分析在它上面完成。
分析网站最主要的是找到数据的来源,具体步骤:
1,找数据来源,大部分来自Dos,XHR和JS标签;
2,找到数据所在的请求,分析其请链接,方式和参数;
3,查找并确定请求参数来源。

Fiddler抓包
Fiddler是位于客户端和服务器端之间的HTTP代理
是最常用的HTTP抓包工具之一,功能强大,WEB抓包利器。

记录,检查及监控所有客户端与服务端的HTTP/HTTPS请求
能够设置断点,篡改及伪造Request/Response的数据
修改hosts,限制网速,http请求性能统计,简单并发,接口测试,辅助自动化测试等
客户端通过HTTP协议获取服务器上的资源

B/S架构 客户端/服务器架构
编写程序到WEB服务器
WEB服务器绑定IP地址并监听设定的端口,接收和处理客户端浏览器的HTTP请求

爬虫库Urllib

Python自带标准库,用于爬虫开发,API(应用程序编程接口)数据获取和测试。

python3中功能模块:
urllib.request 用于打开和读取URL
urllib.error 包含提出的例外urllib.request
urllib.parse 用于解析URL
urllib.robotparser 用于解析robots.txt文件

猜你喜欢

转载自blog.csdn.net/qq_41952762/article/details/108366656