版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python爬虫面试题及详细答案(真实面试版)说明:本套题目适配初级、中级爬虫岗位,内容贴合一线企业真实面试场景,摒弃模板化话术,答案以实操经验、工程落地逻辑为主,适合面试背诵、笔试备考。一、爬虫基础面试题(入门必问)1、简单说下爬虫的工作原理和整体流程?参考答案:爬虫核心就是模拟浏览器,向服务器发送网络请求,获取返回的网页数据,再解析、提取有效数据,最后做存储或后续处理。完整流程分四步:1.发起请求:通过HTTP/HTTPS协议,向目标网址发送GET、POST等请求,携带请求头、参数等信息;2.获取响应数据:服务器接收请求后,返回HTML网页、JSON、二进制文件(图片、视频)等响应内容;3.解析提取数据:对返回的原始数据进行解析,通过正则、XPath、BeautifulSoup、JSON解析等方式,筛选出需要的文本、链接、字段数据;4.数据存储与迭代:将有效数据存入文件、数据库,同时提取页面中的新链接,循环执行爬取,实现整站抓取。2、GET和POST请求的区别?爬虫中分别怎么使用?参考答案:核心区别:1.参数位置:GET参数拼接在URL后面,公开可见;POST参数放在请求体中,隐藏传输;2.数据长度:GET有URL长度限制,无法传输大量数据;POST无长度限制,可传表单、文件、大量参数;3.缓存特性:GET请求会被浏览器缓存,刷新重复请求无变化;POST默认不缓存;4.安全性:POST相对更安全,适合传输账号、密码等敏感数据。爬虫使用场景:普通页面爬取、静态数据查询用GET;登录验证、提交表单、分页加载、接口传参用POST。3、requests库常用参数及核心方法有哪些?参考答案:requests是Python爬虫最常用的请求库,无需手动处理socket底层逻辑,上手简单。常用请求方法:requests.get():发送get请求;requests.post():发送post请求;requests.head():只获取响应头,不获取页面内容。核心参数:1.url:目标请求地址;2.headers:请求头,用来模拟浏览器,伪装客户端;3.params:GET请求的URL参数,字典格式自动拼接;4.data:POST表单参数;json:POST接口JSON格式参数;5.timeout:超时时间,防止请求卡死;6.proxies:代理IP配置;verify=False:关闭HTTPS证书校验。响应对象常用属性:response.text:字符串格式网页源码;response.content:二进制数据(爬图片、视频用);response.json():解析接口JSON数据;response.status_code:响应状态码。4、status_code常见状态码含义?参考答案:200:请求成功,正常获取数据;301/302:永久/临时重定向,页面地址跳转;403:禁止访问,服务器识别为爬虫、无权限;404:页面不存在,URL错误或资源失效;500:服务器内部错误,网站后端故障;502/503:服务器网关异常、服务过载宕机。二、数据解析核心面试题1、正则、BeautifulSoup、XPath三种解析方式的优缺点和适用场景?参考答案:1.正则表达式优点:通用性强,所有文本都能匹配,速度最快;缺点:语法晦涩,容错率低,网页结构轻微改动就失效。适用场景:简单文本提取、非HTML文本(接口乱码数据、日志文本)、快速提取短字段。2.BeautifulSoup优点:语法简单、通俗易懂,容错性高,适合新手;缺点:解析速度最慢,复杂页面效率低。适用场景:小型静态页面、数据量小、快速开发的爬虫。3.XPath优点:语法简洁,层级定位精准,速度介于两者之间,支持模糊匹配、多条件筛选;缺点:需要掌握路径语法。适用场景:绝大多数网页解析,企业爬虫项目主流解析方式。2、lxml库的作用是什么?和BeautifulSoup的区别?参考答案:lxml是Python的高性能XML/HTML解析库,底层是C语言实现,主要用来配合XPath语法解析网页,解析效率远高于纯Python库。区别:BeautifulSoup是纯Python实现,自带解析器,语法简单但速度慢;lxml依赖C内核,速度快、支持XPath和CSS选择器,工业级爬虫基本都用lxml。3、JSON数据解析报错的常见原因及解决办法?参考答案:常见报错:json.decoder.JSONDecodeError原因1:接口返回数据有多余字符、中文乱码、换行符、空格;解决:先用strip()去除首尾空白字符,清洗数据后再解析。原因2:返回数据不是标准JSON格式(单引号、特殊符号);解决:替换单引号为双引号,或用demjson第三方库兼容解析。原因3:接口返回空数据、报错文本;解决:先判断状态码和返回内容是否为空,再执行解析。三、反爬与进阶爬虫面试题(核心必考)1、网站常见的反爬机制有哪些?对应的解决思路是什么?参考答案:1.UA校验反爬:服务器识别客户端标识,无UA直接拦截;解决:请求头添加User-Agent,模拟浏览器。2.频次限制/IP封禁:短时间高频请求,封禁IP;解决:添加随机延时、使用代理IP池、多IP轮换请求。3.Cookie登录校验反爬:未登录无数据,需要身份验证;解决:携带登录后的Cookie、模拟登录请求、保存会话session。4.验证码反爬:图形、滑块、点选验证码;解决:接入打码平台、selenium模拟人工滑动、深度学习识别。5.JS动态渲染反爬:页面数据由JS异步加载,源码无数据;解决:抓包解析真实接口、使用selenium/playwright模拟浏览器渲染、逆向JS加密参数。6.请求参数加密反爬:timestamp、sign、token等加密参数;解决:调试前端JS,逆向加密算法,模拟生成参数。2、requests的session会话对象的作用?参考答案:普通的requests每次请求都是独立的,不会保存Cookie、会话信息。而session对象可以自动保存、携带会话Cookie,实现状态保持。主要用于需要登录的场景:先通过session发送登录请求,后续所有请求都会自动携带登录态Cookie,无需手动添加,适合需要持久会话的爬虫。3、什么是动态网页?动态爬虫和静态爬虫的区别?参考答案:静态网页:页面数据直接写在HTML源码中,requests直接请求就能拿到完整数据,解析简单、速度快。动态网页:初始HTML只有框架,文字、图片、列表等数据由前端JS通过异步接口动态加载渲染,直接请求源码拿不到数据。处理方式:优先抓包找后端真实JSON接口(效率最高);找不到接口再用自动化浏览器工具渲染页面。4、selenium的优缺点,以及反selenium检测的常用方法?参考答案:优点:完全模拟真实浏览器,无需分析接口和JS加密,兼容所有动态网页,上手简单。缺点:运行速度慢、占用资源高、容易被网站检测自动化工具。反检测方法:1.关闭浏览器自动化提示,去掉window.navigator.webdriver标识;2.添加随机请求间隔、随机鼠标操作,避免固定操作频率;3.使用无头浏览器并伪装参数;4.替换官方驱动,使用undetected-chromedriver规避基础检测。5、代理IP的作用?爬虫中如何使用代理?参考答案:作用:解决高频爬取导致的本地IP封禁,隐藏本机真实IP,实现高频、批量爬取。使用方式:在requests请求中传入proxies参数,配置HTTP/HTTPS代理;进阶项目会搭建代理IP池,定时筛选有效IP,自动轮换使用。注意:需要区分短效代理、长效代理,爬取高频站点必须校验IP可用性,避免无效请求。四、爬虫工程与故障排查面试题1、爬虫爬取数据不全、漏数据的原因及解决办法?参考答案:1.网络延迟:请求过快,页面未加载完成就解析;解决:添加延时、等待元素加载完成。2.动态数据未加载:只爬取了静态源码,未等待异步接口返回;解决:抓包解析接口、使用浏览器渲染等待加载。3.页面分页逻辑错误:分页参数拼接错误、最大页数判断失误;解决:校验分页规则,动态获取总页数。4.反爬拦截:部分请求被服务器拦截,返回空数据;解决:添加UA、Cookie、代理,降低请求频率。5.解析规则漏洞:XPath/正则匹配范围不全;解决:调试解析规则,兼容不同页面结构。2、爬虫请求超时、连接失败的常见原因?参考答案:1.网络波动、目标服务器卡顿;2.请求频率过高,服务器限制连接;3.代理IP失效、过期、被封禁;4.HTTPS证书不匹配、域名失效;5.网站设置防火墙、拦截陌生请求。解决:设置超时重试机制、更换代理、降低频率、关闭证书校验、添加请求头伪装。3、如何实现爬虫的断点续爬?参考答案:核心思路:实时记录已爬取的URL或页码,程序中断后,下次启动跳过已爬内容,继续爬取未完成数据。常用实现方式:1.文本记录:用txt、json文件存储已爬页码/链接;2.数据库记录:数据库建字段标记爬取状态(未爬、爬取中、已完成);3.框架实现:Scrapy框架自带调度器,自动记录爬取队列,支持断点续爬。4、多线程、多进程、协程在爬虫中的应用和区别?参考答案:爬虫属于IO密集型任务(大部分时间在等待网络响应),适合用并发提升效率。1.多线程(threading):最常用,开销小、切换快,适合普通并发爬取,GIL锁不影响IO任务,爬虫首选。2.多进程(multiprocessing):开销大、资源占用高,适合CPU密集型任务,爬虫中极少用,仅用于大批量数据解析处理。3.协程(asyncio):轻量级并发,无线程开销,效率最高,适合超高并发爬虫,适合大批量接口请求场景。五、Scrapy框架专项面试题(中高级必问)1、简单说下Scrapy框架的五大核心组件及工作流程?参考答案:五大组件:爬虫文件、引擎、调度器、下载器、管道。工作流程:1.引擎从爬虫文件获取初始URL,交给调度器入队;2.调度器整理请求队列,去重、排序,分发请求;3.下载器接收请求,模拟浏览器发送请求,获取响应;4.响应返回爬虫文件,执行解析逻辑,提取数据和新链接;5.提取的数据交给管道Pipeline,完成清洗、存储;新链接重新入队循环爬取。2、Scrapy如何去重?原理是什么?参考答案:Scrapy自带URL去重机制,通过指纹算法实现。框架会对每一个请求URL进行MD5加密生成唯一指纹,存储在内存队列中。新请求进来时,先比对指纹,已存在则直接丢弃,不存在则入队爬取。自定义去重可以重写去重类,基于Redis实现分布式爬虫去重。3、ScrapyPipeline管道的作用?可以做哪些操作?参考答案:管道是专门处理爬虫提取数据的组件,优先级自定义,可配置多个管道依次执行。常用操作:数据清洗、去重、字段过滤、数据格式化、存入MySQL/Redis/Excel、数据备份、异常数据记录。六、面试高频实操问答(口述真题)1、你做过最复杂的爬虫项目是什么?难点怎么解决的?参考口述答案:我之前做过全站商品数据爬取项目,最大难点是网站有JS参数加密+高频IP封禁+动态验证码三重反爬。首先通过抓包定位到核心接口,调试前端JS代码,逆向出sign加密算法,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无人机驾驶员执照考试无人机操控技术备考习题及答案
- 2000吨紫外光固化纳米涂层材料项目可行性研究报告模板-立项备案
- 年产15000吨精密焊管及配件项目可行性研究报告模板立项申批备案
- 吉林成考高升专理化综合考前摸底试卷考试题库
- 高级美容师资格考试题库及答案完整题库
- 2026-2027广东广州中医药大学学科博士后招收考试模拟试题及答案解析
- 2026年贵州中烟工业有限责任公司人员招聘考试备考试题及答案
- 2026重庆医科大学附属南川医院第四季度编外招聘考试参考题库及答案解析
- 2026安徽国防科技职业学院公开招聘博士6人考试模拟试题及答案解析
- 2026山聊城张炉集镇城镇公益性岗位招聘1人笔试模拟试题及答案解析
- 山东九五高中协作体2026-2027学年高三年级10月学习质量综合评估生物+答案
- 2026年养老护理员一级真题(附答案)及解析
- 2026年二建《建筑》真题及答案
- (正式版)DB11∕T 2364-2024 《职业健康检查质量控制规范 肺功能检查》
- T-CCMSA 41256-2024 城镇输配水管道通.用阀门应用技术规程
- 2025年全国硕士研究生招生考试临床医学综合能力考试真题及答案
- 机动车检测站内审年度计划及实施细则
- 2026年3c低压成套开关设备考试题目及答案
- 中建八局在线测评考什么
- 华为合规新管控机制
- 2025气瓶充装单位气瓶充装安全风险日管控、周排查、月调度管理制度
评论
0/150
提交评论