100道爬虫面试题以及答案(赶快收藏)

这是一份涵盖100道Python爬虫面试题的总结,涉及http协议、爬虫概念、Requests库、网页编码、正则表达式、Xpath、数据持久化、反爬机制、Scrapy框架等多个方面,旨在帮助考生全面复习爬虫相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. http 基于 tcp/ip 协议

2. 百度是通用性爬虫

3. http 返回的状态码代表成功的是 200

4. 网页编码使用的函数式 encode()

5. 解码使用的函数式是 decode()

6. 爬虫又叫 网页蜘蛛、网络机器人

7. 什么是爬虫并解释其概念?

(1) 爬虫又叫网页蜘蛛,是模拟人操作客户端向服务器发起请求,抓取数据的自动化程序或脚本
(2) 说明:
  ① 模拟:用爬虫程序伪装出人的行为,避免被服务器识别为爬虫程序
  ② 客户端:浏览器、app 都可以实现人与服务器之间的交互行为,应用客户端从服务器获取数据
  ③ 自动化:数据量较小可以人工获取,但往往在公司里爬取的数据量在百万条、千万条级别,所以要程序自动化获取数据

8. http 协议与 https 协议的区别

1\. http 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用
2. http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl加密传输协议
3. http 和 https 使用的是完全不同的连接方式,用的端口不一样,前者是 80,后者是 443
4. http 的连接很简单,是无状态的,https 协议是有 ssl +http 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全

10. 什么是 robots 协议?阐述 robots 协议与 爬虫的关系?

(1) Robots 协议是 约定哪些内容允许哪些爬虫抓取
(2) 通用爬虫无需遵守 robots 协议,而我们写的聚焦爬虫则需要遵守

11. 网页编码有 utf-8、gbk、gb2312

12. 默认端口信息:

(1) Mysql:3306
(2) Ssh:22
(3) MongoDB:27017
(4) Redis:6379
(5) https:443
(6) http:80

13. Requests 模块发送 get 请求的参数:

(1) Url
(2) Headers
(3) Params
(4) Proxies

14. Requests 模块发送 post 请求的参数:

(1) Url
(2) Headers
(3) Data
(4) Proxies

15. 简述聚焦爬虫的设计思路

(1) 确定 url,模拟浏览器向服务器发送请求
(2) 获取响应数据并进行数据解析
(3) 将目标数据持久化到本地

16. 简述爬虫的分类及各类爬虫的概念

(1) 通用爬虫:爬取网页数据,为搜索引擎提供检索服务
(2) 聚焦爬虫:针对某一领域爬取特定数据的爬虫
  ① 聚焦爬虫又分为深度爬虫和增量式爬虫

17. 请写出 8 中常用的请求方法

(1) Get
(2) Post
(3) Put
(4) Delete
(5) Trace
(6) Head
(7) Connect
(8) Option

18. 列举反爬虫机制(至少 8 种)

1

2

3

4

5

6

7

8

9

(1) UA 检测

(2) Robots 协议

(3) 验证码

(4) IP 封禁

(5) 账号封禁

(6) 动态数据加载

(7) Js 数据加密

(8) 隐藏参数

(9) 字体反爬

19. Requests 发送请求时携带 headers 参数及作用(至少写 3 点)

1

2

3

4

User-Agent:实现 UA 伪装

Cookie:模拟登陆

Connection:保持连接

Accept:接受数据类型

20. Requests 向服务器发送文件时,文件的打开模式为 wb

21. Requests 模块那个类自动封装 cookie : session

22. 前端页面由 html、css、JavaScript 等三部分组成

23. 请列举三个可以实现网页请求的库

1

2

3

(1) Requests

(2) Urllib

(3) Aiohttp

24. 简述 html、css、JavaScript 的作用

(1) Html:定义网页骨架
(2) Css:定义网页样式
(3) JavaScript:定义网页行为

25. 针对 requests 请求的响应对象,如何获取其文本形式,二进制形式及 json数据

(1) Res.text:获取 html 源码
(2) Res.content:获取二进制流,多用于图片、视频下载等
(3) Res.json():获取 json 数据,多用 ajax 请求

26. 请列举三种数据持久化的方式

(1) Csv
(2) Json
(3) Mysql
(4) Mongodb
(5) Redi

27. 正则元字符中“.”代表 匹配 任意字符,换行符除外

28. Responose.text,response.content,res.json 分别获取响应数据的什么形式

(1) Response.text:文本形式
(2) Response.json():json 数据
(3) Response.content:二进制形式

29. 正则表达式中 (.*) 和 (.*?) 匹配区别

(1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值