python爬虫(一)

python爬虫(一)

一. 爬虫的定义 :程序或者脚本----自动爬取万维网数据的程序或者脚本
二. 爬虫可以解决的问题
(1)解决冷启动问题。
(2)搜索引擎的根基。–通用爬虫
(3)帮助及其学习建立知识图谱。
(4)制作各种比价软件
三. 爬虫工程师的进阶之路:

	初级爬虫工程师
		1.web 前端的知识: HTML、CSS、JavaSc1ipt、 DOM、 DHTML 、Ajax、jQuery、json 等;
		2、正则表达式, 能提取正常一般网页中想要的信息,比如某些特殊的文字, 链接信息, 知道什么是懒惰, 什么是贪婪型的正则;
		3、会使用 XPath 等获取一些DOM 结构中的节点信息;
		4、知道什么是深度优先, 广度优先的抓取算法, 及实践中的使用规则;
		5、能分析简单网站的结构, 会使用urllib或requests 库进行简单的数据抓取。
	中级爬虫工程师:
		1、了解什么事HASH,会简单地使用MD5,SHA1等算法对数据进行HASH一遍存储
		2、熟悉HTTP,HTTPS协议的基础知识,了解GET,POST方法,了解HTTP头中的信息,包括返回状态码,编码,user-agent,cookie,session等
		3、能设置user-agent进行数据爬取,设置代理等
		4、知道什么事Request,什么事response,会使用Fiddler等工具抓取及分析简单地网络数据包;对于动态爬虫,要学会分析ajax请求,模拟制造post数据包请求,抓取客户端session等信息,对于一些简单的网站,能够通过模拟数据包进行自动登录。
		5、对于一些难搞定的网站学会使用phantomjs+selenium抓取一些动态网页信息
		6、并发下载,通过并行下载加速数据爬取;多线程的使用。
	高级爬虫工程师:
		1、能够使用Tesseract,百度AI,HOG+SVM,CNN等库进行验证码识别。
		2、能使用数据挖掘技术,分类算法等避免死链。
		3、会使用常用的数据库进行数据存储,查询。比如mongoDB,redis;学习如何通过缓存避免重复下载的问题。
		4、能够使用机器学习的技术动态调整爬虫的爬取策略,从而避免被禁IP封禁等。
		5、能使用一些开源框架scrapy,scrapy-redis等分布式爬虫,能部署掌控分布式爬虫进行大规模数据爬取。

四.搜索引擎

	(1)概念:
		搜索引擎是通过特定的算法,从互联网上获取网页信息,将其保存到本地,为用户提供检索服务的一种程序
	(2)组成:搜索引擎主要是由通用爬虫组成的
		<1>通用爬虫:将互联网上网页信息【整体】爬取下来的爬虫程序。
		<2>搜索引擎的工作步骤:
			1.抓取网页
			2.数据存储
			3.预处理
				提取文字
				中文分词
				消除噪音
			4.设置网站排名(访问量),为用户提供检索服务
		<3>为什么搜索引擎可以爬取所有的网页?--搜索引擎的通用爬虫是如何爬取所有网页的
			一个网页就是一个url,这个问题其实在问,【url的获取来源】
			url的获取来源:
				1.新网站会主动提交网址给搜索引擎。
				2.网页中的一些外链,这些url全部都会加入到通用爬虫的爬取队列
				3.搜索引擎和dns解析服务商合作,如果有新网站注册,搜索引擎就可以拿到网址。
	(3)通用爬虫的缺陷:
		<1>通用爬虫是爬取整个网页,但是网页中90%的内容基本是没用的。
		<2>不能满足不同行业,不同人员的不同需求。
		<3>只能获取文字,不能获取音频,视频,文档等信息。
		<4>只能通过关键字查询,无法通过语义查询
	(4)聚焦爬虫:在实施网页抓取的过程中,会对【内容进行筛选】,尽量保证【只抓取与需求相关的信息程序】。

五.robots协议

  • 定义:网络爬虫排隆标准
  • 作用:告诉搜索引擎哪些可以爬哪些不能爬。

六.http协议

	(1)什么是http协议:
		是一种规范--约数发不和接受HTML的规范
	(2)http和https
		http:超文本传输协议
		https:安全版的http协议 --ssl--
			对称加密--秘钥
			非对称加密--私钥+公钥
			数字签证---
	(3)https:443
		 http:80
	(4)http的特点:
		<1>应用层协议,
		<2>无连接:http每次发送请求和响应的过程都是独立的
			在http1.0后,有请求头,有请求头:connection:keep-alive: 客户端和服务建立长连接
		<3>无状态:http协议不记录状态。
			cookie和session做到请求状态的记录。
			cookie是在客户端保存,session是在服务器保存
	(5)url:统一资源定位符
		<1>主要作用:用来定位互联网上的任意资源的位置
		<2>为什么url可以定位任意资源?
			组成:https://www.baidu.com/index.html?username=123&password=abc#top
				scheme:协议--https
				netloc:网络地址: ip:port--www.baidu.com
					通过ip定位电脑,通过port定位应用
					10.10.92.44
						代理ip:ip:port
				path:资源路径----index.html
				query:请求参数----? 后面的内容username=123&password=abc
				fragment:锚点---top
			原因:url包含netloc可以定位电脑,path定位资源,这样就可以找到任意在互联网上的信息
		<3>特殊符号:
			?:后面就是请求参数
			&: 连接请求参数
			#:锚点---如果url中有锚点,在爬虫程序中尽量去除,否则可能拿不到数据
	(6)http的工作过程:
		<1>地址解析:
			将url的所有组成部分分别解析出来
		<2>封装http请求数据包
			将第一步解析出来的信息进行装包 ---http数据包
		<3>封装top数据包,通过三次握手建立top
		<4>客户端发送请求
		<5>服务发送响应
		<6>关闭top连接
	(7)当我们在浏览器输入一个url,浏览器加载出这个页面,中间做了哪些事?
		<1>客户端解析url,封装数据包,建立连接,发送请求
		<2>服务器返回url对应资源文件给客户端,比如:index.html	<3>客户端检查index.html是否有静态资源(引用外部文件),比如js,css,图片。有的话分别发送请求,来获取这些静态资源
		<4>客户端获取所有静态:通过html语法,完全将index.html页面显示出来
	(8)http的请求方法:
		get请求:get(获取)---获取服务器的指定资源---涉及到筛选一些信息---请求参数:主要拼接在url中 ---不安全(别人可以通过url获取信息) ---请求参数的大小受限
		
		post请求:post(邮递)---向服务器传递数据---请求数据是方法在请求实体中的---安全---大小不受限
	(9)客户端请求:
		<1>组成:请求行,请求头,空行,请求数据(实体)
			请求头:请求方法:host地址,http协议版本
		<2>请求头:
				user-agent:客户端标识
				accept:允许传入的文件类型
				Accept:				 text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
				Referer:标识产生请求的网页来自于哪个网页
					防盗链
				cookie:cookie信息 ---现在很多网站,必须封装cookie才给数据
			post请求重要的请求头:
				content-type:post请求的数据类型
				content-length:post请求数据的长度
			ajax请求必须封装的头:
				x-requested-with:xmlhttprequest
	(10)服务器响应:
		<1>组成:状态行,响应头,空行,响应正文
		<2>响应头:
			Content-Type:text/html;charset=UTF-8
		<3>状态码(面试常考):
			1XX:表示服务器成功接收部分请求,还需要发生于请求才能处理整个过程。(处理了一半)
			2XX:标识服务器成功接收请求并处理完整个过程。(成功)
				200 成功
			3XX:为了完成请求,客户端需要进一步细化请求。
				302:重定向
				304:使用缓存资源
			4XX:客户端请求错误。(url写错了)
				404:服务器无法找到请求内容
				403:服务器拒绝访问,权限不够
			5XX:服务器错误
				502:服务器错误
				500:请求未完成,服务器遇到不可知问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值