关于Python爬虫常见的面试题

阅读: 评论:0

关于Python爬⾍常见的⾯试题
⽂章⽬录
⼀、介绍爬⾍
1.爬⾍定义
⾃动的抓取互联⽹上信息的脚本⽂件。
2.爬⾍遵循的协议
定义:robot协议(⽹络爬⾍排除标准)
江南的冬景教案作⽤:告诉搜索引擎哪⾥可以爬,哪⾥不可以爬
3.爬⾍可以解决的问题
(1)解决冷启动问题
(2)做搜索引擎少不了爬⾍
(3)可以对爬取的数据进⾏数据分析
4.爬⾍分类
通⽤爬⾍:搜索引擎的主要组成,作⽤就是将互联⽹的上页⾯整体的爬取下来之后,保存到本地。
聚焦爬⾍:聚焦爬⾍在实施⽹页抓取时会对内容进⾏处理筛选,尽量保证只抓取与需求相关的⽹页信息。
5.常见反爬及其应对措施总结
( 1)通过user-agent来判断是否是爬⾍。
通过伪装请求头中的user-agent来解决。若user-agent被检测到,可以⼀些常见的的user-agent放⼊列表,然后每次爬取随机选⼀个。(2)通过访问频率来判断是否是⼀个爬⾍。精氨酸加压素
可以通过设置请求时间间隔。
(3)爬取频繁将ip进⾏封禁。
使⽤代理IP来解决
(4)当⼀定时间内的总请求数超过上限,弹出验证码
简单的图形验证码:可以使⽤tesseract来处理,也可以使⽤最新的⼀个muggle_ocr来处理,识别率还凑合。对于复杂的可以去打码平台。
滑块验证码:通过selenium+浏览器获取滑块的滑动间距,然后捕捉滑块按钮,按照⼈体的规律(⼀般是先快后慢)拖动滑块其他验证码:打码平台解决
(5)cookie限制
1对于cookie有效时间长的,可以通过⼿动登录,然后把cookie添加⾄headers⾥
2.对于cookie有效时间短的,爬⾍每次启动时可以通过selenium登录后获取cookie,然后放到headers⾥
其他须知:
①有的cookie登录前后字符串不变,可能是对⽅⽹站后台加的判断
②有的cookie和设备是进⾏绑定的,可通过多个设备机器进⾏解决
③有的cookie和IP进⾏绑定,可通过代理ip解决
(6)js加密
1.可以使⽤selenium+phantomjs来加载js获取数据
2.通过浏览器的debug来逐步搞清参数⽣成逻辑(常见的有⽆限debugger,js混淆等等)
⼆、介绍搜索引擎
1.搜索引擎的⼯作流程(通⽤爬⾍的⼯作流程)
1. 抓取⽹页:通过搜索引擎将待爬取的url加⼊到通⽤爬⾍的url队列中,进⾏⽹页内容的爬取
2. 数据存储:将爬取下来的⽹页保存到本地,这个过程会有⼀定的去重操作,如果某个⽹页的内 容⼤部分内容都会重复,搜索引擎可能
不会保存
3. 预处理:提取⽂字,中⽂分词,消除噪⾳(⽐如版权声明⽂字,导航条,⼴告等)
4. 设置⽹站排名,为⽤户提供服务
2.搜索引擎的局限性
1. 搜索引擎只能爬取原⽹页,但是页⾯90%内容都是⽆⽤的
2. 通⽤搜索引擎只能爬取⽂字信息,不能对⾳频、图⽚等进⾏爬取
3. 只能基于关键字查询,⽆法基于语义查询
三、介绍http
0.⽹络七层协议
1.http协议特点
http协议是超⽂本传输协议
http协议是⼀个应⽤层协议
⽆连接:每次请求都是独⽴的。
⽆状态:表⽰客户端每次请求都不能记录请求状态,就是两条请求直接不可通信
2.http⼯作过程
地址进⾏DNS解析,将url解析出对应的内容
封装http请求数据包
封装成TCP包,建⽴TCP连接(TCP的三次握⼿)
客户端发送请求
服务器接收请求,发送响应
客户端接收到响应,进⾏页⾯渲染
服务器关闭tcp连接(TCP的四次挥⼿)
3.http协议和https协议的区别
http协议是使⽤明⽂数据传输的⽹络协议,明⽂传输会让⽤户存在⼀个⾮常⼤的安全隐患。端⼝80
HTTPS协议为HTTP协议的安全升级版,就是在HTTP的基础上增加了数据加密。端⼝443
HTTPS 协议是由 SSL+HTTP 协议构建的可进⾏加密传输、⾝份认证的⽹络协议 要⽐http 协议安全
4.http通信
http通信由两部分组成:客户端请求消息 与 服务器响应消息
5.关于响应常见的响应码
中华会务网
意义常见举例1常见举例2
记王忠肃公翱事1xx 表⽰服务器成功接收部分请求,要求客户端继续提
交其余请求才能完成整个处理过程
100 :服务器仅接收到部分请求,但是⼀旦服务器并没有拒绝
该请求,客户端应该继续发送其余的请求
101 :服务器将遵从客户的请
求转换到另外⼀种协议
2xx表⽰服务器成功接收请求并已完成整个处理过程200:OK 请求成功201 :请求被创建完成,同时新的资源被创建
3xx重定向302:所请求的页⾯已经临时转移⾄新的url 303 :所请求的页⾯可在别的url
下被到
4xx客户端错误403:对被请求页⾯的访问被禁⽌404:服务器⽆法到被请求的
页⾯
5xx服务器错误500:请求未完成。服务器遇到不可预知的情况504 :⽹关超时。
6.客户端请求(get和post区别)
①组成:请求⾏、请求头部、空⾏、请求数据四个部分组成
②常见的请求⽅法:get/post
③get和post的区别
GET和POST本质上就是TCP链接,并⽆差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应⽤过程中体现出⼀些不同。
get post
get是从服务器获取数据post是向服务器提交数据get参数拼接在url后⾯,这样是明⽂传输,很不安全。post的参数放在body体内,相⽐get⽐较安全
get提交可以被浏览器缓存post不会被浏览器缓存
get产⽣⼀个TCP数据包(对于GET⽅式的请求,浏览器会把http header和data⼀并发送出去,服务器响应200(返回数据))POST产⽣两个TCP数据包(⽽对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 (返回数据))
get post
传输⼤⼩会受限参数是放在是实体⾥⾯,⽽且参数⼤⼩不会受限
④常见的请求头
User-Agent:客户端请求标识。
节能减排综合性工作方案Accept:传输⽂件类型。
Referer :请求来源。
cookie (cookie):在做登录的时候需要封装这个头。
Content-Type (POST数据类型)
7.服务器响应
①组成:状态⾏,响应头,空⾏,响应正⽂。
②常见的响应头
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地址:端⼝号/资源路径/?key1=参数1&key2=参数2
中医通玄
五、当在浏览器输⼊⼀个url,为什么可以加载出⼀个页⾯?为什么抓包的过程中请求⼀个url,出现很多的资源请求?
当我们在浏览器输⼊⼀个url,客户端会发送这个url对应的⼀个请求到服务器获取内容
服务器收到这个请求,解析出对应内容,之后将内容封装到响应⾥发送到客户端
当客户端拿到这个html页⾯,会查看这个页⾯中是否有css、js、image等url,如果有,在分别进⾏请求,获取到这些资源。
客户端会通过html的语法,将获取到的所有内容完美的显⽰出来。
六、介绍cookie和session
产⽣原因:由于http是⼀个⽆状态的协议,每次请求如果需要之前的⼀些信息,⽆法记录,因此为了解决这个问题,产⽣了⼀种记录状态技术------cookie和session
cookie指某些⽹站为了辨别⽤户⾝份,进⾏会话跟踪⽽存储在⽤户本地终端上的数据,种类有会话cookie和持久cookie (1)会话cookie指存在浏览器内存的cookie,当浏览器关闭,会话cookie会失效
(2)持久cookie是保存在硬盘上的cookie
session⽤来存储特定的⽤户会话所需的属性及其配置信息。
cookie是在客户端记录状态,session是在服务端记录状态
联系:当客户端发送⼀个cookie,服务器会从这个cookie中到sessionID,再查出相应的session信息返回给客户端,来进⾏⽤户页⾯的流转。如果通过sessionID来查session的时候,发现没有session(⼀般第⼀次登陆或者清空了浏览器),那么就会创建⼀个session。
七、 hashlib密码加密
def get_hex(value):
md5_ = hashlib.md5()
md5_.de('utf-8'))
return md5_.hexdigest()
⼋、关于乱码问题
①response的常⽤属性
1.获取字符串类型的响应正⽂:
2.获取bytes类型的响应正⽂: t
3.响应正⽂字符串编码:ding
4.状态码:response.status_code
5.响应头:response.headers
②乱码问题
#⽅法⼀:转换成utf-8格式
)
#⽅法⼆:解码为utf-8 :
with open('index.html','w',encoding='utf-8')as fp:
fp.t.decode('utf-8'))
九、介绍代理
1.代理的作⽤
突破⾃⾝IP访问限制, 访问⼀些平时不能访问的站点。
访问⼀些单位或团体内部资源: ⽐如使⽤教育⽹内地址段免费代理服务器, 就可以⽤于对教育⽹开放的各类FTP 下载上传, 以及各类资料查询共享等服务。
提⾼访问速度: 通常代理服务器都设置⼀个较⼤的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他⽤户再访问相同的信息时,则直接由缓冲区中取⼬信息传给⽤户,以提⾼访问速度。
隐藏真实IP : 上⽹者也可以通过这种⽅法隐藏⾃⼰的IP ,免受攻击。对于爬⾍来说,我们⽤代理就是为了隐藏⾃⾝IP,防⽌⾃⾝的被封锁。
2.代理根据匿名程度的分类
代理介绍
⾼度匿名
代理
会将数据包原封不动地转发, 在服务端看来就好像真的是⼀个普通客户端在访问, ⽽记录的IP 是代理服务器的IPO
普通匿名代理会在数据包上做⼀些改动, 服务端上有可能发现这是个代理服务器, 也有⼀定⼏率追查到客户端的真实伊代理服务器通常会加⼈的HITP 头有
HTTP_VIA 和HTTP_X_FORWARDED FOR 。
透明代理不但改动了数据包, 还会告诉服务器客户端的真实IPO 这种代理除了能⽤缓存技术提⾼浏览速度, 能⽤内容过滤提⾼安全性之外, 并⽆其他显
著作⽤, 最常见的例⼦是内⽹中的硬件防⽕墙。
间谍代理指组织或个⼈创建的⽤于记录⽤户传输的数据, 然后进⾏研究、监控等⽬的的代理服务器。
⼗、介绍json数据
1.数据的分类
种类特点
结构化
数据
数据以⾏为为单位,⼀⾏数据表⽰⼀个实体信息,每⼀⾏的数据饿属性是相同的。常见关系型数据库中以表存储的数据就是结构化数据

本文发布于:2023-06-27 20:27:04,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/138341.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:请求   服务器   客户端
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图