爬虫面试手册

爬虫面试手册

薪资13~20k
岗位职责:
  1. 负责公司数据平台的数据采集、运维优化;
  2. 负责自动化脚本,爬虫脚本;
  3. 研究数据采集策略和防屏蔽规则,提升数据采集系统的稳定性、可扩展性,提高抓取的效率和质量;
岗位要求
  1. 本科及以上学历,计算机、信息科学及相关专业毕业;
  2. 熟悉java、python或go编程语言,熟悉分布式多线程编程,熟悉网络协议及数据交换标准;
  3. 熟悉反爬原理,有成熟的绕过网站屏蔽解决方案;
  4. 熟悉scrapy、nutch等常用爬虫框架及原理;
  5. 熟悉app抓取技术,熟悉常规反爬虫策略和规避方法,能够独立承担爬虫运维工作;
  6. 熟悉beautifulsoup、selenium技术等;
  7. 使用过爬虫工具八爪鱼、火车头等;
  8. 能解决封账号、封IP、验证码识别、图像识别、风控等问题、有解决封号经验优先;
  9. 具有丰富的JS逆向经验,熟悉反混淆、JS跟踪、JS 逆向、WASM、JSVMP还原技能;
  10. 熟练使用AST还原JS、能绕过常见的JS反调试;
  11. 分析问题逻辑清晰,有高度的责任心,有良好的团队协作意识和沟通能力,善于学习和钻研技术;
  12. 加分项:爬取数据日均超100w次,深度参与至少一个大规模分布式爬虫系统的架构设计。

  1. http 协议与 https 协议的区别?
    1. http 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用;
    2.  http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl加密传输协议;
    3. http 和 https 使用的是完全不同的连接方式,用的端口不一样,前者是 80,后者是 443;
    4. http 的连接很简单,是无状态的,https 协议是有 ssl +http 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全;
  2. 什么是 robots 协议?阐述 robots 协议与 爬虫的关系?
    1. Robots 协议是约定哪些内容允许哪些爬虫抓取;
    2. 通用爬虫无需遵守 robots 协议,而我们写的聚焦爬虫则需要遵守。
  3. 简述聚焦爬虫的设计思路
    1. 确定 url,模拟浏览器向服务器发送请求;
    2. 获取响应数据并进行数据解析;
    3. 将目标数据持久化到本地;
  4. 简述爬虫的分类及各类爬虫的概念
    1. 通用爬虫:爬取网页数据,为搜索引擎提供检索服务;
    2. 聚焦爬虫:针对某一领域爬取特定数据的爬虫;又分为深度爬虫和增量式爬虫。
  5. 请写出 8 中常用的请求方法

Get、 Post、Put、 Delete、Trace、 Head、Connect、Option

  1. 列举反爬虫机制
    1. UA 检测;
    2. Robots 协议;
    3. 验证码;
    4. IP 封禁;
    5. 账号封禁;
    6. 动态数据加载;
    7.  Js 数据加密;
    8. 隐藏参数;
    9. 字体反爬
  2. Requests 模块发送 get 请求的参数
    1. Url;
    2. Headers;
    3. Params;
    4. Proxies;
  3. Requests 发送请求时携带 headers 参数及作用
    1. User-Agent:实现 UA 伪装;
    2. Cookie:模拟登陆;
    3. Connection:保持连接;
    4. Accept:接受数据类型。
  4. Requests 向服务器发送文件时,文件的打开模式是什么?

Wb

  1. Requests 模块那个类自动封装 cookie

session

  1. 针对 requests 请求的响应对象,如何获取其文本形式,二进制形式及 json数据
    1. Res.text:获取 html 源码;
    2. Res.content:获取二进制流,多用于图片、视频下载等;
    3. Res.json():获取 json 数据,多用 ajax 请求。
  2. 请列举数据持久化的方式

Csv、Json、Mysql、Mongodb、Redis

  1. Cookie 和 session 的区别?
    1. 数据存储位置不同,cookie 存在客户端,session 存在服务器;
    2. 安全程度不同,cookie 存客户端本地,分析 cookie,实现 cookie 欺骗,考虑到安全性,所以用 session;
    3. 性能不同,session 存服务器,访问量大时,会增加服务器负载,考虑到性能,所以用 cookie;
    4. 数据存储大小不同,单个 cookie 不超过 4k,部分浏览器会限制 cookie的存储个数,但 session 存在服务器,故不受客户端浏览器限制。
  2. 请写出 tcp/udp 协议,ip 协议,arp 协议,http/https 协议及 ftp 协议分别位于 tcp/ip 五层模型的哪一层。
    1. TCP/UDP 协议:传输层;
    2. IP:网络层;
    3. ARP 协议:数据链路层;
    4. HTTP/HTTPS:应用层;
    5. FTP 协议:应用层。
  3. 出 tcp/ip 五层模型
    1. 应用层;
    2. 传输层;
    3. 网络层;
    4. 数据链路层;
    5. 物理层。
  4. 谈谈 tcp 三次握手四次挥手中为什么要三次握手?
    1. TCP 连接的三次握手是为了建立可靠的连接;
    2. 第一次握手:客户端向服务器发送 SYN 包,并进入 SYN_SENF 状态,等待服务器确认;
    3. 第二次握手:服务器收到 SYN 包,确认并发送 SYN+ACK 包,同时进入 SYN_RECV 状态;
    4. 第三次握手:客户端收到服务器 SYN+ACK 包,向服务器确认 ACK 包,进入 ESTABLISHED 状态
  5. 请写出 ftpssh、mysql、MongoDB、redis 协议或软件的默认端口
    1. ftp:21;
    2. Ssh:22;
    3. Mysql:3306;
    4. Mongodb:27017;
    5. Redis:6379。
  6. Mongodb 数据库的优点。
    1. 模式自由,面向集合存储,项目增删字段不影响程序运行;
    2. 具有丰富的查询表达式,支持动态查询,以满足项目的数据查询需求;
    3. 良好的索引支持,文档内嵌对象和数组,均可创建索引;
    4. 支持二进制数据存储,可以将图片视频等文件转换为二进制流存储起来;
    5. 以内存映射为存储引擎,大幅度提升性能。
  7. 多线程爬虫共封装了几个类?每个类的作用是什么
    1. 两个类:爬虫类、解析类;
    2. 爬虫类;定义爬取的行为,将响应数据提交给响应数据队列;
    3. 解析类:定义数据解析规则并与数据库交互,将数据持久化进数据库。
  8. 简述 scrapy 五大核心组件及作用。
    1. 引擎:负责各个组件之间的通讯信号及数据的传递;
    2. 爬虫:定义了爬取行为和解析规则,提交 item 并传给管道;
    3. 调度器:接受引擎传递的 request,并整理排列,然后进行请求的调度;
    4. 下载器:负责下载 request,提交响应给引擎,引擎传递给 spider;
    5. 管道: 负责处理 spider 传递来 的 item,如 去重、持久化存储等。
  9. Scrapy 框架有哪些优点?
    1. 框架封装的组件丰富,适用于开发大规模的抓取项目;
    2. 框架基于 Twisted 异步框架,异步处理请求,更快捷,更高效;
    3. 拥有强大的社区支持,拥有丰富的插件来扩展其功能;
  10. 如何判断 scrapy 管道类是否需要 return item?

在 scrapy 框架中,可以自定义多个管道类,以满足不同的数据持久化需求,当定义多管理类时,多个管道需传递 item 来进行存储,管道类各有自己的权重,权重越小,我们认为越接近引擎,越先接受引擎传递来的 item 进行存储, 故欲使权重大的管道能够接受到 item,前一个管道必须 return item,如果一个管道类后无其他管道类,该管道则无需return item。

  1. 请问为什么下载器返回的相应数据不是直接通过擎传递给管道,而是传递给 spider?

由于在 scrapy 中,spider 不但定义了爬取的行为,还定义了数据解析规则,所以响应数据需传递给 spider 进行数据解析后,才能将目标数据传递给管道,进行持久化存储。

  1. 简述详情页爬取的思路
    1. 访问列表页;
    2. 从列表页的响应数据中获取详情页 url;
    3. 请求详情页 url,使用 scrapy.request 手动发送请求并指定回调;
    4. 解析数据在回调中获取目标数据;
  2. 简述多页爬取的思路
    1. 思路一:将所有的页面 url 生成后放在 start_urls 中,当项目启动后会对 start_urls 中的 url 发起请求,实现多页爬取;
    2. 思路二:在解析方法中构建 url,使用 scrapy 手动发送请求并指定回调,实现多页爬取。
  3. 请谈谈动态数据加载的爬取思路

在 scrapy 项目中正常对动态加载的页面发起请求,在下载中间件中拦截动态加载页面的响应数据,在process_response方法中,调用selenium抓取相应的 url,获取 html 源码后再替换原有响应

  1. 请列举种反爬机制及其对应的反爬策略
    1. Ua检测:ua 伪装;
    2. Robots 协 议 : requests 模 块 无 须 理 会 , settings 配 置 中 将ROBOTSTXT_OBEY 改为 False;
    3. 动态数据加载:selenium 抓取;
    4. 图片懒加载:根据响应数据获取实际的 src 属性值;
    5. Ip 封禁:使用代理 ip。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的自动装箱和拆箱

在Java中,自动装箱(Autoboxing)和拆箱(Unboxing)是两种重要的特性,它们允许在基本数据类型(如int、char、double等)和它们对应的包装类(如Integer、Character、Double等&…

技术周总结 2024.05.13-05.19(计算机网络 浮点数不准确原因和解决 java ThreadLocal XSS)

文章目录 一、05.18周六1.1)网络相关1.1.1) 问题01:交换机和路由器的区别是什么?交换机(Switch)路由器(Router)总结 1.1.2) 问题02:以太网介绍基本概念物理层…

lenovo联想小新Pro 16 APH8 2023款(83AR)笔记本电脑原装出厂Windows11系统镜像安装包下载

恢复出厂开箱状态OEM预装win11系统,自带恢复重置初始化还原功能 下载链接:https://pan.baidu.com/s/1n_mPM4ZrLPrmXpCTukuyCQ?pwdmnwj 提取码:mnwj 联想原装系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、Office办公软件、联想…

王安石,变革年代的文学巨匠

王安石,字介甫,号半山,生于北宋真宗天禧五年(公元1021年),卒于哲宗元佑元年(公元1086年),享年66岁。他是中国历史上杰出的政治家、思想家、文学家和改革家,其…

2024年电工杯A题论文首发+摘要分享+问题一代码分享

问题一论文代码链接:https://pan.baidu.com/s/1kDV0DgSK3E4dv8Y6x7LExA 提取码:sxjm --来自百度网盘超级会员V5的分享 园区微电网风光储协调优化配置 摘要:园区微电网由风光发电和主电网联合为负荷供电,为了尽量提高风光电量的…

python ofd转pdf及图片

本文部分内容参考,如有侵权请联系删除:使用 easyofd 解析ofd 文件_python模块easyofd如何使用-CSDN博客 背景需求:需要将邮箱中得ofd格式发票提取出来转换成pdf或者图片。 在网上搜了发现使用pyofd包,安装之后使用各种问题&…

.NET 一款兼容Exchange获取密钥的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

SCSS基本使用:构建高效、可维护的CSS架构

SCSS基本使用:构建高效、可维护的CSS架构 SCSS(Sassy CSS)是一个流行的CSS预处理器,它扩展了CSS的功能,提供了变量、嵌套规则、混合(Mixins)、函数等强大的编程特性,使得开发者能够编…

甘肃教育杂志社-甘肃教育编辑部

《甘肃教育》来稿要求:    1、本刊对所有稿件有删改权,如不同意删改,请投稿时注明,切勿一稿多投,来稿一律文责自负。    2、稿件以word文档格式,小四号宋体字,1.5倍行距。观点鲜明,数据…

电商平台的消费增值模式革新

在当今的电商市场,用户留存和粘性是各大平台竞相追求的目标。而消费增值模式,以其独特的激励机制,正逐渐成为电商平台吸引和留住用户的新策略。 一、消费即投资:创新的返利机制 在传统的电商消费中,消费者完成交易后&…

小阿轩yx-FTP文件传输服务

小阿轩yx-FTP文件传输服务 协议 用来上传和下载实现远程共享文件统一管理文件 原理 控制文件的双向传输,是一个应用程序工作在TCP/IP协议簇的提高文件传输的共享性和可靠性使用C/S模式的工作方式连接同时处理服务器和客户端的连接命令和数据传输将命令和数据分…

【NumPy】NumPy实战入门:线性代数(dot、linalg)与随机数(numpy.random)详解

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

Modular RPG Hero PBR

-掩码着色着色器提供了无限的颜色变化。(适用于标准/HDRP/URP 11.0.0) -为剑与盾/双剑/双剑姿态提供了简单的角色控制器。(不包括弓和魔杖控制器)(它是用旧的输入系统建造的) -HDRP/URP(11.0.0)SRP 100%支持常规着色器和遮罩着色着色器(基于着色器图形) -具有许多模块…

rtk技术的使用, test ok

1. 什么是gnss 2 rtk定位

逻辑回归模型的背景与应用

1.1逻辑回归模型的背景与应用 逻辑回归模型,作为一种经典的机器学习方法,起源于统计学领域。在众多实际应用场景中,逻辑回归模型都发挥着重要作用,尤其在分类问题中。当我们需要对具有离散特征的数据进行建模和预测时&#xff0c…

五分钟部署开源运维平台Spug结合内网穿透实现远程登录管理

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件…

移除元素-力扣

第一种解法&#xff0c;暴力解法&#xff0c;使用两个for循环一个进行遍历&#xff0c;一个进行覆盖&#xff0c;代码如下&#xff1a; class Solution { public:int removeElement(vector<int>& nums, int val) {int size nums.size();for(int i 0; i < size; …

C语言中的 ?: :三元运算符详解

C语言中的 ?: &#xff1a;三元运算符详解 在C语言的浩瀚代码海洋中&#xff0c;三元运算符&#xff08;?:&#xff09;如同一位优雅的舞者&#xff0c;以简洁的姿态完成条件判断与赋值的双重任务。它以问号&#xff08;?&#xff09;和冒号&#xff08;:&#xff09;这两个…

Linux完整版命令大全(九)

4. linux压缩备份命令 ar 功能说明&#xff1a;建立或修改备存文件&#xff0c;或是从备存文件中抽取文件。语  法&#xff1a;ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]补充说明&#xff1a;ar可让您集合许多…

Spring boot 注入成员变量HttpServletRequest的原理

前言 最近做项目&#xff0c;springboot项目&#xff0c;本来我们在controller的requestmapping取参数值或者返回写时&#xff0c;使用方法参数&#xff0c;但是发现老项目直接注入了成员变量&#xff0c;Spring本身是单例的&#xff0c;如果是成员变量注入&#xff0c;那么也…