python爬⾍⾯试题及答案-Python⾯试题爬⾍篇(附答案)第⼀部分 必答题
注意:第31题1分,其他题均每题3分。
1,了解哪些基于爬⾍相关的模块?
-⽹络请求:urllib,requests,aiohttp-数据解析:re,xpath,bs4,pyquery-selenium- js逆向:pyexcJs
2,常见的数据解析⽅式?
- re、lxml、bs4
3,列举在爬⾍过程中遇到的哪些⽐较难的反爬机制?
-动态加载的数据-动态变化的请求参数-js加密-代理- cookie
4,简述如何抓取动态加载数据?
-基于抓包⼯具进⾏全局搜索- 如果动态加载的数据是密⽂,则全局搜索是搜索不到
5,移动端数据如何抓取?
-
fiddler,appnium,⽹络配置
6,抓取过哪些类型的数据,量级多少?
-电商,医疗器械,彩妆,新闻资讯,⾦融,体育赛事(参考hao123⽹站)-量级:- 最好不要超过100w。⾃⼰计算(页数,⼀页显⽰多少数据)
7,了解哪些爬⾍框架?
- scrapy,pyspider
8,谈谈对scrapy的了解?
-功能:数据解析,持久化存储,深度爬取,分布式,关键件- 五⼤核⼼组件的作⽤和⼯作流程
9,如何解析出携带标签的局部页⾯数据?
- bs4
10,scrapy核⼼组件?
- spider,引擎,调度器,下载器,管道
11,scrapy中间件的应⽤?
-作⽤:拦截请求和响应- 拦截请求:设置代理
12,如何实现全站数据爬取?
- 基于⼿动请求发送+递归解析- 基于CrwalSpider(LinkExtractor,Rule)
13,如何检测⽹站数据更新?
- 增量式爬⾍
14,分布式爬⾍实现原理?
- 基于scrapy-redis实现的分布式。
15,如何提升爬取数据的效率(异步爬⾍)
-使⽤框架-线程池,多任务的异步协程- 分布式
16,列举你接触的反爬机制?
ua检测、封ip、js混淆、参数加密、数据加密,动态加载
17,什么是深度优先和⼴度优先(优劣)
-默认情况下scrapy是深度优先。-深度优先:占⽤空间⼤,但是运⾏速度快- ⼴度优先:占⽤空间少,运⾏速度慢
18,scrapy如何实现持久化存储
-解析数据-将解析的数据封装到item中-将item提交管道-在管道中持久化存储- 开启管道
19,谈谈对crawlspider的理解,如何使⽤其进⾏深度爬取
- 链接提取器&规则解析器
20,如何实现数据清洗?
-清洗空值(缺失值)-将空对应的⾏数据删除.dropna-使⽤近邻值填充空值.fillna-清洗重复值-重复的⾏数据删除:drop_duplicates()-清洗异常值- ⼀定要有⼀个判定异常值的条件
21,了解过机器学习吗?
-特征⼯程-特征预处理-归⼀化,标准化-特征值化-将⾮数值型的数据转换成数值型的数据-降维-sklean框架-线性回归,KNN,贝叶斯-补充:1.树模型:决策树2.集成模型:随机森林-深度学习框架:- tensorflow
22,在爬⾍中为什么需要是⽤selenium?selenium和爬⾍之间的关联么?
selenium和爬⾍之间的关联是什么?-爬取动态加载的数据- 模拟登录
23,列举你所熟知的selenium模块中的常⽤⽅法及其作⽤
24,解释在多任务异步协程中事件循环(loop)的作⽤是什么?
- 可以将注册在其内部的任务对象表⽰的特定操作进⾏异步执⾏
25,多任务异步协程是如何实现异步的?
-⼀个任务对象就是⼀个协程也是⼀组特定的操作,将任务对象注册到事件循环中,就可以异步的执⾏每⼀组特定的操作- wait⽅法,await 关键字
26,验证码如何处理?
-
打码平台
27,scrapy 和 scrapy-redis 有什么区别?
- scrapy-redis这个组件可以给scrapy框架提供共享的管道和调度器实现分布式爬⾍
28,说⼀说打开浏览器访问
1.域名解析成IP
2.与⽬的主机进⾏TCP连接(三次握⼿)
3.发送和接收数据
29,列出你知道 header 的内容以及信息
- User-Agent- Connection
30,简述scrapy的去重原理?
需要将dont_filter设置为False开启去重,默认是False;
对于每⼀个url的请求,调度器都会根据请求的相关信息加密得到⼀个指纹信息,并且将指纹信息和set()集合中得指纹信息进⾏⽐对,如果set()集合中已经存在这个数据,就不在将这个Request放⼊队列中。如果set()集合中没有,就将这个Request对象放⼊队列中,等待被调度。
31,下列叙述中错误的是:(1分)
A.栈是线性结构
B.队列是线性结构
C.线性列表是线性结构
D.⼆叉树是线性结构
32,简述前序、中序、后续遍历?
跟左右
左跟右
左右跟
33,写代码:实现⼀个冒泡排序。
defsort(alist):
length=len(alist)for j in range(length-1)for i in range(length-1-j):if alist[i] > alist[i+1]: alist[i],alist[i+1] = alist[i+1],alist[i]returnalist
alist= [3,8,5,2,0,7,6]print(sort(alist))
34,写代码:实现⼀个快速排序。
defsort(alist,left,right):
low=left
hight=rightif low
alist[low]=alist[high]break
else:
high-= 1
while low
low+= 1
else:
alist[high]=alist[low]break
if low ==high:
alist[low]=mid
sort(alist,left,low-1)
sort(alist,high+1,right)return alist
第⼆部分 补充题
1,列举常见⽤的git命令?
2,你们公司/团队⽤怎么做的协同开发?
快速排序python实现3,公司如何做代码review?谁来做?
4,线上代码如果出现bug如何解决?
5,git rebase的作⽤?

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