小言_互联网的博客

爬虫面试题

401人阅读  评论(0)

1. 简述 requests模块的作用及基本使用
2. 简述 beautifulsoup模块的作用及基本使用
3. 简述 seleninu模块的作用及基本使用
4. scrapy框架中各组件的工作流程
5. 在scrapy框架中如何设置代理(两种方法)
6. scrapy框架中如何实现大文件的下载
7. scrapy中如何实现限速
8. scrapy中如何实现暂定爬虫
9. scrapy中如何进行自定制命令
10. scrapy中如何实现的记录爬虫的深度
11. scrapy中的pipelines工作原理
  • 第一步:判断当前ScrapyPipelinePipeline类中是否含有from_crawler,如果有from_crawler,则obj = ScrapyPipelinePipeline.from_crawler(……)如果没有:bj = ScrapyPipelinePipeline()
  • 第二步:obj.open_spider(self, spider)
  • 第三步:obj.process_item(self, item, spider),obj.process_item(),……
  • 第四步:obj.close_spider(self, spider)
12. scrapy的pipelines如何丢弃一个item对象

使用raise DropItem()。

13. 简述scrapy中爬虫中间件和下载中间件的作用
14. scrapy-redis组件的作用
15. scrapy-redis组件中如何实现的任务的去重
16. scrapy-redis的调度器如何实现任务的深度优先和广度优先
18. twisted是什么以及和request的区别

requests是一个python实现可以伪造浏览器发送请求的http请求模块,requests只有一个功能就是封装socket发送请求。twisted是基于事件循环的异步非阻塞网络框架,功能有封装socket发送请求和单线程完成并发请求(第一个请求发送之后不等待请求的结果继续发第二个请求)。注意twisted的三个关键字:非阻塞(不等待)、异步(回调)、事件循环(一直循环去检查状态)。

19. http请求的本质

请求头和请求体,有两种请求体,一种是&符号连接的,另外一种是json格式的。

20. scrapy框架的组件以及执行流程
  • 引擎找到要执行的爬虫(scrapy crawl xxx会找到找到xxx爬虫名),并执行爬虫的start_requests方法,并得到一个迭代器
  • 迭代器循环时会获取request对象,而request对象中封装了要访问的url和回调函数
  • 将所有request对象(任务)放到调度器中,用于以后被下载器下载。
  • 下载器去调度器中获取要下载任务(就是request对象),下载完成后执行回调函数
  • 回到spider的回调函数中[如果yield Request()是重新放到调度器中去,如果yield Item()对象叫个pipeline]

转载:https://blog.csdn.net/Thanlon/article/details/100717466
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场