python 爬虫相关面试题

1.爬虫大概流程

  1. 发起请求
  • 通过HTTP库向目标站点发起请求,也就是发送一个 Request,请求可以包含额外的header等信息,等待服务器响应
  1. 获取响应内容
  • 如果服务器能正常响应,会得到一个 Response,Response 的内容便是所要获取的页面内容,类型可能是 HTML,Json 字符串,二进制数据(图片或者视频)等类型
  1. 解析内容
  • 得到的内容可能是 HTML,可以用正则表达式,页面解析库等进行解析,可能是Json,可以直接转换为 Json 对象解析,可能是二进制数据,可以做保存或者进一步的处理
  1. 保存数据
  • 保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件

2.反反爬措施

  • 添加 headers,比如常用的 user-agent,cookie 等
  • 设置 ip 代理池
  • 设置休眠时间,每次请求之前停顿一下
  • 验证码识别
  • 解决 ajax 动态加载

3.scrapy 核心组件

  • 调度器
    • 用来接受引擎发过来的请求,由过滤器过滤重复的url并将其压入队列中,在引擎再次请求的时候返回,可以想象成一个URL(抓取网页的网址或者说是链接)的优先队列,由他决定下一个要抓取的网址是什么,用户可以根据自己的需求定制调度器
  • 下载器
    • 下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源,Scrapy的下载器代码不会太复杂,但效率高(原因:Scrapy下载器是建立在twisted这个高效的异步模型上的)
  • 爬虫
    • 爬虫是主要干活的,用户最关心的部分, 它可以生成url, 并从特定的url中提取自己需要的信息, 即所谓的实体(Item). 用户也可以从中提取出链接, 让Scrapy继续抓取下一个页面
  • 实体管道
    • 负责处理爬虫从网页中抽取的实体, 主要的功能是持久化实体、验证实体的有效性、清除不需要的信息. 当页面被爬虫解析后, 将被发送到项目管道, 并经过几个特定的次序处理数据.
  • 引擎
    • Scrapy引擎是整个框架的核心。它用来控制调度器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。对整个系统的数据流进行处理, 触发事务(框架核心).

scrapy 工作流程

  1. spider中的url被封装成请求对象交给引擎(每一个对应一个请求对象)
  2. 引擎拿到请求对象之后,将全部交给调度器
  3. 调度器拿到所有请求对象后,通过内部的过滤器过滤掉重复的url,最后将去重后的所有url对应的请求对象压入到队列中,随后调度器调度出其中一个请求对象,并将其交给引擎
  4. 引擎将调度器调度出的请求对象交给下载器
  5. 下载器拿到该请求对象去互联网中下载数据
  6. 数据下载成功后会被封装到response中,随后response会被交给下载器
  7. 下载器将response交给引擎
  8. 引擎将response交给spiders
  9. spiders拿到response后调用回调方法进行数据解析,解析成功后生成item,随后spiders将item交给引擎
  10. 引擎将item交给管道,管道拿到item后进行数据的持久化存储
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值