zoukankan      html  css  js  c++  java
  • 爬虫面试题汇总

    ####

    一.项目问题:
    1.你写爬虫的时候都遇到过什么反爬虫措施,你最终是怎样解决的

    1.你写爬虫的时候都遇到过什么反爬虫措施,你最终是怎样解决的
    通过headers反爬虫:解决策略,伪造headers
    基于用户行为反爬虫:动态变化去爬取数据,模拟普通用户的行为, 使用IP代理池爬取或者降低抓取频率,或 通过动态更改代理ip来反爬虫
    基于动态页面的反爬虫:跟踪服务器发送的ajax请求,模拟ajax请求,selnium
    和phtamjs。或 使用selenium + phantomjs 进行抓取抓取动态数据,或者找到动态数据加载的json页面。
    验证码 :使用打码平台识别验证码
    数据加密:对部分数据进行加密的,可以使用selenium进行截图,使用python自带的pytesseract库进行识别,但是比较慢最直接的方法是找到加密的方法进行逆向推理。

    ###

    2.你写爬虫的时候 使用的什么框架 选择这个框架的原因是什么?
    scrapy。
    优势:
    可以实现高并发的爬取数据, 注意使用代理;
    提供了一个爬虫任务管理界面, 可以实现爬虫的停止,启动,调试,支持定时爬取任务;
    代码简洁
    
    劣势:
    1.可扩展性不强。
    2.整体上来说: 一些结构性很强的, 定制性不高, 不需要太多自定义功能时用pyspider即可, 一些定制性高的,需要自定义一 些 功能时则使用Scrapy。

    ####

    二.scrapy框架专题部分(很多面试都会涉及到这部分)

    1)请简要介绍下scrapy框架。
    (2)为什么要使用scrapy框架?scrapy框架有哪些优点?
    (3)scrapy框架有哪几个组件/模块?简单说一下工作流程。
    4.scrapy的去重原理(指纹去重到底是什么原理)
    5.scrapy中间件有几种类,你用过哪些中间件*
    6.scrapy中间件再哪里起的作用
    7,scrapy实现分布式抓取简单点来说
    8,分布式的去重原理
    9,海量数据的去重原理

    ###

    三.代理问题:

    1.为什么会用到代理
    一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会会禁止这个IP的访问。
    所以我们需要设置一些代理服务器,每隔一段时间换一个代理,就算IP被禁止,依然可以换个IP继续爬取。
    2.代理怎么使用(具体代码, 请求在什么时候添加的代理) 3.代理失效了怎么处理 事先用检测代码检测可用的代理,每隔一段时间更换一次代理,如果出现302等状态码,则立即更换下一个可用的IP。

    ####

    四.验证码处理:

    1.登陆验证码处理
    图片验证码:先将验证码图片下载到本地,然后使用云打码识别;
    滑动验证码:使用selenium模拟人工拖动,对比验证图片的像素差异,
    
    *2.爬取速度过快出现的验证码处理
    设置setting.py中的DOWNLOAD_DELAY,降低爬取速度;
    用xpath获取验证码关键字,当出现验证码时,识别验证码后再继续运行。
    3.如何用机器识别验证码**
    对接打码平台
    对携带验证码的页面数据进行抓取
    将页面中的验证码进行解析, 将验证码图片下载到本地
    将验证码图片提交给打码平台进行识别, 返回识别后的结果
    云打码平台使用:

    ###

    ####

    ####

  • 相关阅读:
    LeetCode 227. Basic Calculator II
    LeetCode 224. Basic Calculator
    LeetCode 103. Binary Tree Zigzag Level Order Traversal
    LeetCode 102. Binary Tree Level Order Traversal
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode 169. Majority Element
    LeetCode 145. Binary Tree Postorder Traversal
    LeetCode 94. Binary Tree Inorder Traversal
    LeetCode 144. Binary Tree Preorder Traversal
  • 原文地址:https://www.cnblogs.com/andy0816/p/15103081.html
Copyright © 2011-2022 走看看