python爬虫(1)爬虫基础知识

爬虫的定义:程序或脚本:

自动爬取万维网数据 的程序或者脚本

二.爬虫可以解决的问题:

(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).搜索引擎的工作步骤:
  ①.爬取网页
  ②.数据存储
  ③.预处理
    提取文字
    中文分词
    消除噪音
  ④.设置网站排名(访问量),为用户提供检索服务。
(3).为什么搜索引擎可以爬取所有网页 --> 搜索引擎的通用是如何爬取所有的网页。
   一个网页就是一个url,【url的获取来源】
   url的获取来源:
    ①.新网站会主动提交网址给搜索引擎。
    ②.网页中的一些外链,这些url全部会加入到通用爬虫的爬取队列。
    ③.搜索引擎和dns解析服务商合作,如果有新网站注册,搜索引擎就可以拿到网址。

3.通用爬虫的缺陷:

(1):通用爬虫是爬取整个网页,但是网页中90%的内容基本是没用的
(2):不能满足不同行业,不同人员的不同需求
(3):只能获取文字,不能获取音频,视频,文档,等信息
(4).只能通过关键字查询,无法通过语义查询。

4.聚焦爬虫:

在实施网页抓取的过程中,会对内容进行筛选尽量保证之抓取与【需求相关】的信息的爬虫程序

五. robots协议:

定义:网络爬虫排除标准
作用:告诉搜索引擎那些可以爬取那些不能爬

六.http协议:

1.什么是http协议:

是一种规范 --> 约束发布和接受的http协议。

2.http和https:

http:超文本传输协议。
https:安全版http协议。–ssl–
  --对称加密-- 【–密钥–】
  --非对称加密-- 【 --私钥-- + --公钥–】
  --数字签证-- {公钥}

3.https: 443

http: 80
Upgrade-Insecure-Requests:1 ,可以将http升级成https请求

4.http的特点:

(1)应用层协议。
(2)无连接:http每次发送请求和响应的过程都是独立的。
   在http 1.0 以后,有请求头:connection:keep-alive;客户端和服务建立长连接。
(3)无状态:http协议不记录状态。
   cookie和session做到请求状态的记录
   cookie是在客户端保存,session是在服务器保存。

5.utl:统一资源定位符

(1)主要作用:用来定位互联网上的任意资源的位置。
(2)为什么url可以定位任意资源?
   组成:https://www.baidu.com/index.html?username=123&password=abc#top
   scheme:协议—https
   netloc:网络地址:ip:port
   通过ip定位电脑,通过port定位应用
    192.168.92.10
    使用代理ip:ip:port
   path:资源路径. --index.html
   query:请求参数 --?后面的内容
   fragment:锚点 --top
   原因:url包含netloc可以定位电脑,path定位资源,这样就可以找到任意互联网的数据
(3)特殊符号:
    ?:后面是请求参数
    &:链接请求参数
    #:锚点 —如果url中有锚点,在爬虫程序中尽量去除。

6.http的工作过程:

(1)地址解析:
   将url的所有组成部分分别解析出来
(2)分装http请求数据包。
   将第一步解析出来的信息进行装包 —http数据包。
(3)封装tcp数据包,通过三次握手建立tcp
(4)客户端发送请求
(5)服务器发送响应
(6)关闭tcp链接

标题7.当我们在浏览器输入一个url,浏览器加载出这个页面,中间做了那些事?

(1)客户端解析url ,封装数据包,建立链接,发送请求。
(2)服务器返回url对应的资源文件给客户端,index.html
(3)客户端检查index.html是否有静态文件(引用外部文件),比如js,cs,img.有的话再分别请求发送请求,获取这些静态文件
(4)客户端获取所有静态文件,通过html语法,完全将index.html页面显示出来。

8.http的请求方法:

get请求:get(获取) -->获取服务器制定资源 --> 涉及到筛选一些信息 -->请求参数:主要拼接在url中。 --> 不安全【别人可以通过url获取信息】–> 请求参数的大小受限。
post请求:post(邮递) —> 向服务器传递数据 --> 请求数据是方法在请求实体中的–>安全 -->大小受限。

9.客户端请求:

(1)组成:请求行、请求头、空行、请求数据【实体】
请求行:请求方法:host地址,http协议版本
请求头:
  【user-agent】:客户端标识。
  【accept】:允许传入的文件类型。
  【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:请求未完成,服务器遇到不可知的问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值