爬虫重点题

Posted tian-cai-1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫重点题相关的知识,希望对你有一定的参考价值。

1.掌握哪些基于爬虫的模块?

- 网络请求:urllib,requests,aiohttp

- 数据解析:re,xpath,bs4,pyquery

- selenium

- js逆向:pyexcJs

2.常见的数据解析方式

- xpath,bs4

3.列举在爬虫过程中遇到的哪些比较难的反爬机制

- 动态加载的数据

- 动态变化的请求参数

- js加密

- 代理

- cookie

4.概述如何抓取动态加载数据

- 基于抓包工具进行全局搜索

- 如果动态加载的数据是密文,则全局搜索是搜索不到

5.移动端数据抓取

- fiddler,appnium,网络配置

6.抓取过哪些类型的数据,量级多少?

- 电商,医疗器械,彩妆,新闻资讯,金融,体育赛事(参考hao123网站)

- 量级:

- 最好不要超过100w。自己计算(页数,一页显示多少数据)

7.了解哪些爬虫框架?(pyspider)

- scrapy,pyspider

8.谈谈对scrapy的了解

- 功能:数据解析,持久化存储,深度爬取,分布式,关键件

- 五大核心组件的作用和工作流程

 

9.如何解析出携带标签的局部页面数据

- bs4

10.scrapy核心组件

- spider,引擎,调度器,下载器,管道

11.scrapy中间件的应用

- 作用:拦截请求和响应

- 拦截请求:设置代理

 

12.如何实现全站数据爬取

- 基于手动请求发送+递归解析

- 基于CrwalSpider(LinkExtractor,Rule)

 

13.如何检测网站数据更新?

- 增量式爬虫

 

14.分布式实现原理

- 基于scrapy-redis实现的分布式。

15.如何提升爬取数据的效率(异步爬虫)

- 使用框架

- 线程池,多任务的异步协程

- 分布式

16.列举你接触的反爬机制

- 10个反爬机制

17.scrapy中什么是深度优先和广度优先(优劣)

- 默认情况下scrapy是深度优先。

- 深度优先:占用空间大,但是运行速度快

- 广度优先:占用空间少,运行速度慢

18.scrapy如何实现持久化存储

- 解析数据

- 将解析的数据封装到item中

- 将item提交管道

- 在管道中持久化存储

- 开启管道

19.谈谈对crawlspider的理解,如何使用其进行深度爬取

- 链接提取器&规则解析器

 

20.如何实现数据清洗

- 清洗空值(缺失值)

- 将空对应的行数据删除.dropna

- 使用近邻值填充空值.fillna

- 清洗重复值

- 重复的行数据删除:drop_duplicates()

- 清洗异常值

- 一定要有一个判定异常值的条件

 

21.了解过机器学习吗

- 特征工程

- 特征预处理

- 归一化,标准化

- 特征值化

- 将非数值型的数据转换成数值型的数据

- 降维

- sklean框架

- 线性回归,KNN,贝叶斯

- 补充:

1.树模型:决策树

2.集成模型:随机森林

- 深度学习框架:

-  tensorflow

22 在爬虫中为什么需要是用selenium?selenium和爬虫之间的关联是什么?

- 爬取动态加载的数据

- 模拟登录

23 列举你所熟知的selenium模块中的常用方法及其作用

24 解释在多任务异步协程中事件循环(loop)的作用是什么?

- 可以将注册在其内部的任务对象表示的特定操作进行异步执行

 

25 多任务异步协程是如何实现异步的?

- 一个任务对象就是一个协程也是一组特定的操作,将任务对象注册到事件循环中,就可以异步的执行每一组特定的操作

- wait方法,await关键字

26.验证码如何处理?

- 打码平台

27.scrapy 和 scrapy-redis 有什么区别?

- scrapy-redis这个组件可以给scrapy框架提供共享的管道和调度器实现分布式爬虫

28.说一说打开浏览器访问 www.baidu.com 获取到结果,整个流程。

29.列出你知道 header 的内容以及信息

- User-Agent

- Connection

30.scrapy的去重原理

需要将dont_filter设置为False开启去重,默认是False;

对于每一个url的请求,调度器都会根据请求的相关信息加密得到一个指纹信息,并且将指纹信息和set()集合中得指纹信息进行比对,如果set()集合中已经存在这个数据,就不在将这个Request放入队列中。如果set()集合中没有,就将这个Request对象放入队列中,等待被调度。

以上是关于爬虫重点题的主要内容,如果未能解决你的问题,请参考以下文章

python面试题----4

网络爬虫研发重点介绍

网络爬虫实例代码优化 面试重点

爬虫-考核题

利用简易爬虫完成一道基础CTF题

python面试题——爬虫相关