当了一次面试官,主要是面试爬虫岗位,具体涉及scrapy爬虫框架和一些数据存储的小问题。具体的问题如下:
- scrapy框架如何将单机版爬虫改为分布式爬虫【使用scrapy_redis】,具体来讲需要修改哪几个组件的哪些具体部分
- Spider
- 如何设置监听redis队列
- 如何从redis内提取数据,并构造请求。介绍一下make_request_from_data函数的用法?
- settings.py
- 调度器 SCHEDULER
- redis链接 REDIS_URL
- 去重 DUPEFILTER_CLASS
- 我们有一批1900个key,用于爬虫使用。这些key调用上限为3000,而且有的时候部分key会失效,key的最大并发数为100。对于这一批key,你将如何设计用于分布式爬虫。请你给一个基于scrapy_redis的爬虫方案【具体可以从代理池的设计,维护,key的使用方面介绍】。【我们需要实时了解到每一个key的使用情况】
- 了解分布式消息队列rabbitmq/kafka吗?你有没有部署维护的经验?在使用过程中是如何确保消息不丢失【从消息的发布,消费两方面简单说说】?死信队列了解过吗?有没有使用消息队列实现过消息延迟/定时消费功能【要求一条数据在指定时间被消费】。有没有了解过rabbitmq的交换机,介绍一下kafka和rabbitmq队列的基础队列模式
- 熟悉js逆向吗?
- 有通过js逆向解决过反爬问题吗?有的话详细介绍一下
- 请求头参数加密
- 请求参数加密
- cookie加密
- 响应结果加密
- 滑块验证码了解吗?遇到滑块验证码如何解决?
- 在scrapy分布式爬虫中,如果有请求参数/请求头参数/cookie等是需要即时生成,如何设计参数生成器/参数使用?
- 了解过mongo集群/es集群吗?有没有部署维护过集群
- mongo在更新数据时如何提升效率?【如何更新】
- 如何存储碎片化数据?【千万级别小图片,数据会涉及转移与上传】
- 对于媒体数据如何存储?【.mp4/.mp3】
- 有没有开发/设计过爬虫监控项目?我们需要监控爬虫集群的请求速度,数据的入库速度,服务器的负载,爬虫的启停,如何实现?
- redis使用过嘛?
- 有没有在爬虫开发过程中使用redis实现某些功能,详细介绍一下?
- 使用过docker吗?
- 在哪些方面使用docker,简单介绍一下
- 有没有使用docker部署过爬虫?
- 有没有使用k8s管理过docker容器与爬虫