爬虫面试基础整理

  1. 常用网络数据爬取方法
    urllib
    正则表达式
    Beautiful Soup
    Selenium
    Scrapy
    Lxml
  2. 常见的反爬手段与应对方法
  • 反爬手段:headers字段(User-Agent字段、过referer字段、cookie)
    解决方法:在爬虫中添加Headers,浏览器的User-Agent复制到爬虫的Headers中,将Referer值修改为目标网站域名。
  • 反爬手段:js(跳转、生成了请求参数、数据的加密)
    解决方法:selenium+phantomJS框架,调用浏览器内核,并利用phantomJS执行js来模拟人为操作以及触发页面中的js脚本。
  • 反爬手段:IP地址
    解决方法:IP代理,随机间隔几秒。
  • 反爬手段:验证码
    解决方法:cookie登录、打码平台、selenium 模拟
  • 反爬手段:css(利用css掩盖真实数据)
    解决方法:找到被替换文本和顺序、重排文本、对原文中span标签根据class序号进行替换。
  1. 数据去重,清洗,存入数据库
  • set()
  • 数据库唯一约束
  • Scrapy内置的url去重方法
  • 正则表达式
  • 编写代码清洗数据
  • 数据库存储后清洗
  1. Scrapy的基本结构
    引擎(Scrapy)
    调度器(Scheduler)
    下载器(Downloader)
    爬虫(Spiders)
    项目管道(Pipeline)
    下载器中间件(Downloader Middlewares)
    爬虫中间件(Spider Middlewares)
    调度中间件(Scheduler Middewares)
  2. Scrapy运行流程
    1.引擎从调度器中取出一个URL用于抓取
    2.引擎把URL封装成一个Request给下载器
    3.下载器把资源下载并封装成Response
    4.爬虫解析Response
    5.解析出Item交给管道进一步处理
    6.解析出URL把URL交给调度器等待抓取
  3. Scrapy几种中间件
  • 下载器中间件(Downloader Middlewares):请求到网页后,页面被下载时进行处理
  • 爬虫中间件(Spider Middlewares):在爬虫运行中进行一些处理
  • 调度中间件(Scheduler Middewares)
  1. 代理怎么使用
    可以放在一个列表中,随机选择一个代理去访问网站。
  2. 同步和异步
  • 线程方面:
    同步:多个线程同时访问同一资源,等待访问结束,浪费时间、效率低下。
    异步:在访问资源的时,在空闲等待时可以同时访问其他的资源。
  • 网络方面:
    同步:提交请求→等待服务器处理→处理完毕返回 期间客户端浏览器不能做任何事情。
    异步:事件触发请求→服务器处理→处理完毕 期间浏览器可以做其他事情。
  1. 链表和顺序存储
  • 顺序存储:
    原理:数据存储在一块连续的内存空间。
    优点:存储效率高、速度快、通过下标直接存储。
    缺点:插入删除慢、不可以增长长度。
  • 链表存储
    原理:动态分配空间,存储器有空间就不会发生存储溢出。
    优点:插入删除速度快、保留物理顺序,更改只需改变指针指向。
    缺点:查找需要循环链表,速度慢。

你可能感兴趣的:(爬虫面试基础整理)