作者
不愿透露姓名の网友
出品
CSDN博客
介绍爬虫
1.爬虫:自动的抓取互联网上信息的脚本文件。
2.爬虫可以解决的问题:
(1)解决冷启动问题
(2)搜索引擎的根基:做搜索引擎少不了爬虫
(3)建立知识图谱,帮助建立机器学习知识图谱
(4)可以制作各种商品的比价软件,趋势分析。
3.爬虫分类
(1)通用爬虫:搜索引擎的主要组成,作用就是将互联网的上页面整体的爬取下来之后,保存到本地。
(2)聚焦爬虫:聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。
通用爬虫和聚焦爬虫的区别:聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。
4.爬虫遵循的协议:robot协议
定义:网络爬虫排除标准。
作用:告诉搜索引擎哪里可以爬,哪里不可以爬。
5.通用爬虫工作流程
(1)抓取网页:通过搜索引擎将待爬取的url加入到通用爬虫的url队列中,进行网页内容的爬取
(2)数据存储:将爬取下来的网页保存到本地,这个过程会有一定的去重操作,如果某个网页的内容大部分内容都会重复,搜索引擎可能不会保存。
(3)预处理:提取文字,中文分词,消除噪音(比如版权声明文字,导航条,广告等)。
(4)设置网站排名,为用户提供服务。
6.一些反爬及其应对措施
(1)通过user-agent来判断是否是爬虫。
解决方案:可以通过伪装请求头中的user-agent来解决。若user-agent被检测到,可以找大量的user-agent,放入列表,然后进行更换
(2)将IP进行封杀。
解决方案:可以通过代理来伪装IP。
(3)通过访问频率来判断是否是一个爬虫。
解决方案:可以通过设置请求间隔,和爬取间隔。
(4)当一定时间内的总请求数超过上限,弹出验证码。
解决方案:对于简单的验证码图片可以使用tesseract来处理,对于复杂的可以去打码平台。
(5)通过JS来获取页面数据。
解决方案:可以使用selenium+phantomjs来加载JS获取数据。
介绍搜索引擎
1.搜索引擎的主要组成
通用爬虫:就是将互联网的上页面整体的爬取下来之后,保存到本地。
通用爬虫要想爬取网页,需要网站的url.但是搜索引擎是可以搜索所有网页的。那么通用爬虫url就要涉及到所有网页,这个‘所有’是如何做到的:
新网站向搜索引擎主动提交网址;在其他网站上设置新网站外链;搜索引擎和DNS解析服务商(如DNSPod等)合作,新网站域名将被迅速抓取。2.搜索引擎的工作流程(通用爬虫的工作流程)
(1)抓取网页:通过搜索引擎将待爬取的URL加入到通用爬虫的URL队列中,进行网页内容的爬取。
(2)数据存储:将爬取下来的网页保存到本地,这个过程会有一定的去重操作,如果某个网页的内容大部分内容都会重复,搜索引擎可能不会保存。
(3)预处理:提取文字,中文分词,消除噪音(比如版权声明文字,导航条,广告等)。
(4)设置网站排名,为用户提供服务。
3.搜索引擎的局限性
(1)搜索引擎只能爬取原网页,但是页面90%内容都是无用的。
(2)搜索引擎不能满足不同行业,不同人的特定需求。
(3)通用搜索引擎只能爬取文字信息,不能对音频、图片等进行爬取。
(4)只能基于关键字查询,无法基于语义查询。
介绍HTTP
网络七层协议:
1.HTTP协议特点
HTTP协议是超文本传输协议;HTTP协议是一个应用层协议;无连接:每次请求都是独立的;无状态,表示客户端每次请求都不能记录请求状态,就是两条请求直接不可通信。2.HTTP工作过程
地址进行DNS解析,将URL解析出对应的内容封装HTTP请求数据包封装成TCP包,建立TCP连接(TCP的三次握手)客户端发送请求服务器接收请求,发送响应客户端接收到响应,进行页面渲染服务器关闭TCP连接(TCP的四次挥手)3.HTTP协议和HTTPS协议的区别
HTTP协议是使用明文数据传输的网络协议,明文传输会让用户存在一个非常大的安全隐患。端口80HTTPS协议可以理解为HTTP协议的安全升级版,就是在HTTP的基础上增加了数据加密。端口HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比HTTP协议安全。4.HTTP通信
HTTP通信由两部分组成:客户端请求消息与服务器响应消息。
5.关于响应常见的响应码
6.客户端请求(Get和Post区别)
(1)组成:请求行、请求头部、空行、请求数据四个部分组成
(2)请求方法Get/Post
(3)Get和Post的区别
GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
(4)常见的请求头
User-Agent:客户端请求标识。
Accept:传输文件类型。
Referer:请求来源。
cookie(cookie):在做登录的时候需要封装这个头。
Content-Type(POST数据类型)
7.服务器响应
(1)组成:状态行,响应头,空行,响应正文。
(2)常见的响应头
Content-Type:text/html;资源文件的类型,还有字符编码
Content-Length:响应长度
Content-Size响应大小
Content-Encoding告诉客户端,服务端发送的资源是采用什么编码的。
Connection:keep-alive这个字段作为回应客户端的Connection:keep-alive,告诉客户端服务器的tcp连接也是一个长连接,客户端可以继续使用这个TCP连接发送HTTP请求
url
统一资源定位符:
基本格式:scheme://host[:port#]/path/…/?query-string协议://服务器ip