爬虫小整理

一、 *简答题********(题数不少于1********0********题,A********BC类********)*

1、 什么是爬虫?【考核知识点:爬虫概念】

爬虫又叫网页蜘蛛,是模拟人操作客户端向服务器发起请求,抓取数据

的自动化程序或脚本。

2、 爬虫的分类,并解释其概念?【考核知识点:爬虫分类】

爬虫根据其作用及服务的主体不同可分为两类: 通用爬虫 、聚焦爬虫

通用爬虫是用来获取数据为搜索引擎 提供检索服务的爬虫程序, 所以搜索引擎背后都有一个强大的通用爬虫.

聚焦爬虫是针对特定领域抓取特定数据的爬虫程序.

3、 robots是什么?【考核知识点:robots概念】

robots协议是规定一个网站不允许哪些爬虫爬取哪些页面的一个约定。

robots协议可以通过 网站首页/robots.txt 进行查看

4、 OSI(osi)七层模型是什么?【考核知识点:网络模型】

应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

5、 什么是HTTP协议?【考核知识点:HTTP概念】

超文本传输协议(英文:****H*yper*T****ext ****T****ransfer ****P****rotocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

6、 什么是HTTPS协议?【考核知识点:HTTPS概念】

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。

7、 HTTP和HTTPS的区别?【考核知识点:HTTP与HTTPS的区别】

(1).https协议需要到ca申请证书,因而需要一定费用, 现阶段国内各大云厂商也提供免费的证书。

(2).http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

(3).http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

(4).http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全.(尽管HTTPS安全, 但是传输的效率没有http高)

8、 简述TCP协议?【考核知识点:TCP协议概念】

TCP协议是一种面向连接的, 可靠的, 基于字节流的传输层通信协议。

9、 TCP协议的四大特点?【考核知识点:TCP协议特点】

1).有序性: 数据包编号, 判断数据包的正确次序

2).正确性: 使用checksum函数检查数据包是否损坏, 发送接收时都会计算校验和

3).可靠性: 发送端有超时重发, 并有确认机制识别错误和数据的丢失

4).可控性: 滑动窗口协议与拥塞控制算法控制数据包的发送速度

10、 简述UDP协议并概述其特点?【考核知识点:UDP协议概念】

用户数据报协议, 面向无连接的传输层协议, 传输不可靠. 其具有以下特点:

1).无连接, 数据可能丢失或损坏

2).报文小, 传输速度快

3).吞吐量大的网络传输, 可以在一定程度上承受数据丢失

一、 *简答题********(题数不少于1********0********题,A********BC类********)*

11、 简单描述网络请求的过程?【考核知识点:网络请求】

客户端, 通常指web浏览器或APP向服务器发起请求, 服务器接收到请求进行处理, 并向客户端返回响应。

12、 Requests 模块发送 get 请求的参数?【考核知识点:requests发送get请求】

(1) Url

(2) Headers

(3) Params

(4) Proxies

13、 Requests 模块发送 post 请求的参数?【考核知识点:requests发送post请求】

(1) Url

(2) Headers

(3) Data

(4) Proxies

14、 请写出常用的请求方式(至少6种)?【考核知识点:常用请求】

GET: 请求页面, 并返回页面内容 # 重点

POST: 用于提交表单数据或上传文件, 数据包含在请求体中 # 重点

PUT: 从客户端向服务器传送的数据取代指定文档中的内容

DELETE: 请求服务器删除指定的页面

HEAD: 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头

CONNECT: 把服务器当作跳板,让服务器代替客户端访问其他网页

OPTIONS: 允许客户端查看服务器的性能

TRACE: 回显服务器收到的请求,主要用于测试或诊断

15、 什么是HTTP协议?【考核知识点:HTTP概念】

超文本传输协议(英文:****H*yper*T****ext ****T****ransfer ****P****rotocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

16、 什么是URL?【考核知识点:URL概念】

URL是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。

17、 请列举几个常用的爬虫请求库?【考核知识点:爬虫库】

requests模块、urllib模块、aiohttp模块

18、 列举反爬虫机制(至少8种)?【考核知识点:反爬虫机制】

(1) UA 检测

(2) Robots 协议

(3) 验证码

(4) IP 封禁

(5) 账号封禁

(6) 动态数据加载

(7) Js 数据加密

(8) 隐藏参数

(9) 字体反爬(在游览器正常显示,在开发者 下载 会乱码)

19、 简述聚焦爬虫的设计思路?【考核知识点:聚焦爬虫】

(1) 确定 url,模拟浏览器向服务器发送请求

(2) 获取响应数据并进行数据解析

(3) 将目标数据持久化到本地

20、 常见的响应状态码(说出5个以上)?【考核知识点:状态码】

200系列:

​ 200 成功 服务器已成功处理了请求 # 重点1

300系列:

301 永久移动 请求的网页已永久移动到新位置,即永久重定向 # 重点

302 临时移动 请求的网页暂时跳转到其他页面,即暂时重定向 # 重点

400系列:

400 错误请求 服务器无法解析该请求 # 重点

401 未授权 请求没有进行身份验证或验证未通过

403 禁止访问 服务器拒绝此请求 # 重点

404 未找到 服务器找不到请求的网页

500系列

500 服务器内部错误 服务器遇到错误,无法完成请求 # 重点

501 未实现 服务器不具备完成请求的功能

502 错误网关 服务器作为网关或代理,从上游服务器收到无效响应

504 网关超时 服务器作为网关或代理,但是没有及时从上游服务器收到请求

505 HTTP版本不支持 服务器不支持请求中所用的HTTP协议版本

21、 响应数据的三种形式分别是什么?【考核知识点:响应数据】

响应数据基本分为三种形式: 文本形式、json形式和二进制流形式。

22、 响应数据的三种形式分别如何获取?【考核知识点:响应数据获取】

1.文本形式: response.text

2.json形式: response.json()

3.二进制流形式: response.content

23、 requests 发送请求时携带 headers 参数及作用?【考核知识点:requests请求】

User-Agent:实现 UA 伪装

Cookie:模拟登陆

Connection:保持连接

Accept:接受数据类型

24、 简述 html、css、JavaScript 的作用?【考核知识点:html基础】

(1) Html:定义网页骨架

(2) Css:定义网页样式

(3) JavaScript:定义网页行为

25、 在数据抓取的过程中的GET与POST 方法有什么区别??【考核知识点:get请求和post请求】

1、GET 请求,请求的数据会附加在 URL 之后,以?分割 URL 和传输数据,多个参数用&连接。URL 的编码格式采用的是 ASCII 编码,而不是 unicode,即是说所有的非 ASCII 字符都要编码之后再传输。

POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。

上面的 item=bandsaw 就是实际的传输数据。因此,GET 请求的数据会暴露在地址栏中,而 POST 请求则不会。

2、传输数据的大小

在 HTTP 规范中,没有对 URL 的长度和传输的数据大小进行限制。但是在实际开发过程中,对于 GET,特定的浏览器和服务器对 URL 的长度有限制。因此,在使用 GET 请求时,传输数据会受到 URL 长度的限制。对于 POST,由于不是 URL 传值,理论上是不会受限制的,但是实际上各个服务器会规定对 POST 提交数据大小进行限制。Apache、IIS都有各自的配置。

3、安全性

POST 的安全性比 GET 的高。这里的安全是指真正的安全,而不同于上面 GET 提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过 GET 请求,用户名和密码都会暴露再 URL 上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET 请求提交的数据还可能会造成 Cross-site request frogery 攻击。

26、 线程的同步和异步?【考核知识点:线程】

线程同步:多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低
线程异步:在访问资源时在空闲等待时同时访问其他资源,实现多线程机制

27、 网络的同步和异步?【考核知识点:网络】

同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步: 请求通过事件触发->服务器处理(这时浏览器仍然可以作其他事情)->处理完毕

28、 请列举三种数据持久化的方式?【考核知识点:数据持久化】

(1) Csv

(2) Json

(3) Mysql

(4) Mongodb

(5) Redis

29、 请列举爬虫中解析数据的模块(至少三种)?【考核知识点:解析数据】

(1) Lxml

(2) Bs4

(3) Pyquery

30、 Bs4 的三种选择器是什么?【考核知识点:bs4使用】

节点选择器、方法选择器、css 选择器

31、 Cookie 和 session 的区别?【考核知识点:会话维持】

(1) 数据存储位置不同,cookie 存在客户端,session 存在服务器

(2) 安全程度不同,cookie 存客户端本地,分析 cookie,实现 cookie 欺骗,

考虑到安全性,所以用 session

(3) 性能不同,session 存服务器,访问量大时,会增加服务器负载,考虑

到性能,所以用 cookie

(4) 数据存储大小不同,单个 cookie 不超过 4k,部分浏览器会限制 cookie

的存储个数,但 session 存在服务器,故不受客户端浏览器限制

32、 代理如何分类?【考核知识点:代理】

代理分为三类:

1.透明代理ip: 请求时, 服务器知道请求的真实ip, 知道请求使用了代理

2.匿名代理ip: 请求时, 服务器知道请求使用了代理, 但不知道请求的真实ip

3.高匿代理ip: 请求时, 服务器不知道请求使用了代理, 也不知道请求的真实ip(最贵)

33、 简述代理原理?【考核知识点:代理原理】

爬虫中的代理实际上是爬虫与服务器之间一个传递请求与响应的媒介。

实际上爬虫将请求发出时是交给代理的, 有代理将请求发送给服务器, 服务器返回的响应交给代理, 再有代理将请求转交给爬虫程序。

34、 正则表达式中 (.) 和 (.?) 匹配区别?【考核知识点:正则表达式】

(1) (.*):贪婪匹配,尽可能多的匹配

(2) (.*?):非贪婪匹配,尽可能少的匹配

35、 Re 模块常用的三个匹配方法,并简述其特点?【考核知识点:正则表达式】

(1) Re.findall():以列表形式返回所有满足条件的对象

(2) Re.search():匹配到第一个就返回一个对象 ,用 group()取值,匹

配不到返回 None

(3) Re.match():从字符串开头匹配,匹配返回一个对象,用 group()取

值,匹配不到返回 None

36、 正则元字符中“.”代表什么?【考核知识点:正则表达式】

匹配 任意字符,换行符除外

37、 re的match和search区别?【考核知识点:正则表达式】

match只检测开头

search检测整个字符串

38、 请简述单属性多值匹配,多属性匹配概念及使用到的函数或关键字?【考核知识点:正则匹配】

(1) 单属性多值匹配:根据节点某属性包含的某个值进行定位,使用

contains 函数

(2) 多属性匹配:根据节点的多个属性,共同定位该节点,使用关键字 and

39、 Json.dumps 的参数 ensure_ascii 的作用?【考核知识点:json】

避免中文乱码

40、 请写出 ftp 协议,ssh 协议、mysql、MongoDB、redis 等协议或软件的默认端口号?【考核知识点:默认端口号】

(1) ftp:21

(2) Ssh:22

(3) Mysql:3306

(4) Mongodb:27017

(5) Redis:6379

41、 Cookie 和 session 的区别?【考核知识点:会话维持】

(1) 数据存储位置不同,cookie 存在客户端,session 存在服务器

(2) 安全程度不同,cookie 存客户端本地,分析 cookie,实现 cookie 欺骗,

考虑到安全性,所以用 session

(3) 性能不同,session 存服务器,访问量大时,会增加服务器负载,考虑

到性能,所以用 cookie

(4) 数据存储大小不同,单个 cookie 不超过 4k,部分浏览器会限制 cookie

的存储个数,但 session 存在服务器,故不受客户端浏览器限制

42、 代理如何分类?【考核知识点:代理】

代理分为三类:

1.透明代理ip: 请求时, 服务器知道请求的真实ip, 知道请求使用了代理

2.匿名代理ip: 请求时, 服务器知道请求使用了代理, 但不知道请求的真实ip

3.高匿代理ip: 请求时, 服务器不知道请求使用了代理, 也不知道请求的真实ip(最贵)

43、 简述代理原理?【考核知识点:代理原理】

爬虫中的代理实际上是爬虫与服务器之间一个传递请求与响应的媒介。

实际上爬虫将请求发出时是交给代理的, 有代理将请求发送给服务器, 服务器返回的响应交给代理, 再有代理将请求转交给爬虫程序。

44、 正则表达式中 (.) 和 (.?) 匹配区别?【考核知识点:正则表达式】

(1) (.*):贪婪匹配,尽可能多的匹配

(2) (.*?):非贪婪匹配,尽可能少的匹配

45、 Re 模块常用的三个匹配方法,并简述其特点?【考核知识点:正则表达式】

(1) Re.findall():以列表形式返回所有满足条件的对象

(2) Re.search():匹配到第一个就返回一个对象 ,用 group()取值,匹

配不到返回 None

(3) Re.match():从字符串开头匹配,匹配返回一个对象,用 group()取

值,匹配不到返回 None

46、 正则元字符中“.”代表什么?【考核知识点:正则表达式】

匹配 任意字符,换行符除外

47、 re的match和search区别?【考核知识点:正则表达式】

match只检测开头

search检测整个字符串

48、 请简述单属性多值匹配,多属性匹配概念及使用到的函数或关键字?【考核知识点:正则匹配】

(1) 单属性多值匹配:根据节点某属性包含的某个值进行定位,使用

contains 函数

(2) 多属性匹配:根据节点的多个属性,共同定位该节点,使用关键字 and

49、 Json.dumps 的参数 ensure_ascii 的作用?【考核知识点:json】

避免中文乱码

50、 请写出 ftp 协议,ssh 协议、mysql、MongoDB、redis 等协议或软件的默认端口号?【考核知识点:默认端口号】

(1) ftp:21

(2) Ssh:22

(3) Mysql:3306

(4) Mongodb:27017

(5) Redis:6379

51、 什么是selenium?【考核知识点:selenium概念】

selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。

Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。

selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。

52、 列举 selenium 常用的定位页面元素的方式?(至少四种)【考核知识点:selenium定位元素】

find_element_by_name
find_element_by_id
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

53、 简单介绍一下lxml?【考核知识点:介绍lxml】

lxml是一个Python库,使用它可以轻松处理XML和HTML文件. 这个库的主要优点是易于使用,在解析大型文档时速度非常快,归档的也非常好,并且提供了简单的转换方法来将数据转换为Python数据类型,从而使文件操作更容易。

54、 请列举selenium 的交互操作(至少四种)?【考核知识点:selenium交互】

(1) Clear()

(2) Click()

(3) Send_keys()

(4) Double_click()

55、 假如实例化的浏览器对象名为 broswer,请写出该对象打开百度首页的代码以及获取百度首页源码的代码?【考核知识点:selenium使用】

1.导包

from selenium import webdriver

2.实例化浏览器对象

borwser = webdriver.chrome(“dirverpath”)

3.访问百度地址

borwser.get(“http://www.baidu.com”)

4.获取访问的地址

html = browser.page_source

56、 动态数据加载的两种情况及相应的解决方案?【考核知识点:动态数据加载】

(1) ajax 请求

方案:如果 url 有规律,直接构建 url 实现请求,如果 url 无规律,

则用 selenium

(2) Js 动态数据加载

方案:可以采用 scrapy 框架与 selenium 框架对接,实现动态数据

加载

57、 请谈谈动态数据加载的爬取思路?【考核知识点:动态数据爬取】

在 scrapy 项目中正常对动态加载的页面发起请求,在下载中间件中拦截

动态加载页面的响应数据,在process_response方法中,调用selenium

抓取相应的 url,获取 html 源码后再替换原有响应

58、 请列举 5 种反爬机制及其对应的反反爬策略?【考核知识点:反爬机制】

(1) Ua 检测:ua 伪装

(2) Robots 协 议 : requests 模 块 无 须 理 会 , settings 配 置 中 将

ROBOTSTXT_OBEY 改为 False

(3) 动态数据加载:selenium 抓取

(4) 图片懒加载:根据响应数据获取实际的 src 属性值

(5) Ip 封禁:使用代理 ip

59、 列举三种常用的网络数据爬取的模块或框架?【考核知识点:爬虫框架】

(1)requests

(2)scrapy

(3)urllib

(4)aiohttp

(5)pyspider

60、请列举三种关系型数据库与两种菲关系型数据库?【考核知识点:数据库】

(1)关系型数据库:Mysql、orcale、sql_server

(2)非关系数据库:redis、mongodb

61、 简单描述第三方打码平台?【考核知识点:第三方打码平台】

第三方打码平台是帮助我们进行验证码是别的平台, 打码平台提供各种语言的接口供开发这调用, 开发者按照要求调用, 将验证码图片传递给第三方打码平台的服务器进行识别, 识别完成后, 第三方打码平台会将结果返回给开发者。

62、 Python中any()和all()的区别?(至少四种)【考核知识点:python基础方法】

any():只要迭代器中有一个元素为真就为真

all():迭代器中所有的判断项返回都是真,结果才为真

63、 python中什么元素为假?【考核知识点:python基础】

数字0,空字符串,空列表、空字典、空元组、None, False

64、 爬虫使用多线程好?还是多进程好?为什么?【考核知识点:进程和线程】

对于IO密集型代码(文件处理,网络爬虫),多线程能够有效提升效率(单线程下有IO操作会进行IO等待,会造成不必要的时间等待,而开启多线程后,A线程等待时,会自动切换到线程B,可以不浪费CPU的资源,从而提升程序执行效率)。

在实际的采集过程中,既考虑网速和相应的问题,也需要考虑自身机器硬件的情况,来设置多进程或者多线程。

65、 简单描述深浅拷贝?【考核知识点:深浅拷贝】

深拷贝是将对象本身复制给另一个对象,浅拷贝则是将对象的引用复制给另一个对象。所以当复制后的对象改变时,深拷贝的原对象值不会改变,而浅拷贝原对象的值会被改变。

66、 Python中is和 = = 的区别?【考核知识点:python基础】

is 表示的是对象标示符(object identity),而 == 表示的是相等(equality)。

is 的作用是用来检查对象的标示符是否一致,也就是比较两个对象在内存中的地址是否一样,而 == 是用来检查两个对象是否相等。

67、 简述文件读取时 read 、readline、readlines 的区别和作用?【考核知识点:文件读取】

read()会读取整个文件,将读取到底的文件内容放到一个字符串变量,返回 str 类型。

readline()读取一行内容,放到一个字符串变量,返回 str 类型。

readlines() 读取文件所有内容,按行为单位放到一个列表中,返回 list 类型。

68、 你是否了解谷歌的无头浏览器??【考核知识点:无头浏览器】

无头浏览器即headless browser,是一种没有界面的浏览器。既然是浏览器那么浏览器该有的东西它都应该有,只是看不到界面而已。
Python中selenium模块中的PhantomJS即为无界面浏览器(无头浏览器):是基于QtWebkit的无头浏览器

69、 动态加载又对及时性要求很高怎么处理?【考核知识点:动态数据】

Selenium+Phantomjs

尽量不使用 sleep 而使用 WebDriverWait

70、HTTPS 是如何实现安全传输数据的?【考核知识点:HTTPS】

HTTPS 其实就是在 HTTP 跟 TCP 中间加多了一层加密层 TLS/SSL。SSL 是个加密套件,负责对 HTTP 的数据进行加密。TLS 是 SSL 的升级版。现在提到 HTTPS,加密套件基本指的是 TLS。原先是应用层将数据直接给到 TCP 进行传输,现在改成应用层将数据给到TLS/SSL,将数据加密后,再给到 TCP 进行传输。

71、 什么是并发?【考核知识点:并发概念】

在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

72、 什么是并行?【考核知识点:并行概念】

在操作系统中是指,一组程序按独立异步的速度执行,不等于时间上的重叠(同一个时刻发生)。

73、 多线程爬虫分哪几部分?【考核知识点:多线程爬虫】

1.url队列: 存放url

2.响应数据队列: 存放响应数据

3.爬虫线程类: 负责数据的爬取以及向响应数据队列中提交响应数据

4.解析线程: 负责从响应数据队列中取出响应数据, 并对响应数据进行解析

74、 什么是进程?【考核知识点:进程概念】

进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。

75、 什么是线程?【考核知识点:线程概念】

线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。

简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程

76、 什么是协程?【考核知识点:协程概念】

一种用户态的轻量级线程,协程的调度完全由用户控制.协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

77、 IO密集型和CPU密集型的区别?【考核知识点:计算机基础】

IO密集型: 系统运作, 大部分的情况是CPU在对I/O(硬盘/内存)的读/写

CPU密集型: 大部分时间用来做计算, 逻辑判断等CPU动作的程序称为CPU密集型

78、 什么是僵尸进程和孤儿进程?【考核知识点:进程】

孤儿进程: 父进程退出, 子进程还在运行的这些子进程都是孤儿进程, 孤儿进程将被init进程(进程号为1)所收养, 并由init进程对他们完成状态收集工作.

僵尸进程:进程使用fork创建子进程, 如果子进程退出, 而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中的这些进程是僵尸进程

79、 Python中的进程与线程的使用场景?【考核知识点:进程线程使用场景】

多进程适合在CPU密集型操作(CPU指令比较多, 如位数多的浮点运算).

多线程适合在IO密集型操作(读写数据操作较多的, 比如爬虫)

80、线程是并发还是并行?进程是并发还是并行?【考核知识点:线程和进程】

线程是并发, 进程是并行;

进程之间相互独立, 是系统分配资源的最小单位, 同一个进程中的所有线程共享资源。

81、 什么是MongoDB?【考核知识点:MongoDB概念】

MongoDB是一个文档数据库,提供好的性能,领先的非关系型数据库。采用BSON存储文档数据。
BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON.
相对于json多了date类型和二进制数组。

82、 为什么用MOngoDB?【考核知识点:MongoDB的优势】

架构简单

没有复杂的连接

深度查询能力,MongoDB支持动态查询。

容易调试

容易扩展

不需要转化/映射应用对象到数据库对象

使用内部内存作为存储工作区,以便更快的存取数据。

83、 Mongodb 数据库的优点?【考核知识点:MongoDB的优点】

模式自由,面向集合存储,项目增删字段不影响程序运行

具有丰富的查询表达式,支持动态查询,以满足项目的数据查询需求

良好的索引支持,文档内嵌对象和数组,均可创建索引

支持二进制数据存储,可以将图片视频等文件转换为二进制流存储起来

以内存映射为存储引擎,大幅度提升性能

84、 请写出MongoDB数据的相关命令?【考核知识点:MongoDB命令】

创建并使用集合:use xxx

查看当前工作的集合: db

查看所有非空集合: show dbs

查看当前集合的所有数据:db.table.find()

85、 名字空间(namespace)是什么?【考核知识点:命名空间】

Mongodb存储BSON对象在从集(collection)中。数据库名字和从集名字以句点联结起来叫做名字空间。

86、 MongoDB中的分片是什么意思?【考核知识点:MongoDB分片】

分片是数据水平切分到不同的物理节点,当应用数据越来越大的时候,数据量也会越来越大,当数据量增长时,单台机器可能无法存储数据或可接受的读取写入吞吐量,利用分片技术可以添加更多的机器来应对数据量整涨。以及读写操作的要求。

87、 MongoDB允许空值null吗?【考核知识点:MongoDB空值】

对于对象用户而言,可以添加,但是,用户不能添加空值到数据库从集,因为空值不是对象,然而用户能够添加空对象{}。

88、 MongoDB中的索引是什么?【考核知识点:MongoDB索引】

索引是MongoDB中的特殊结构,它以易于遍历的形式存储一小部分数据集。索引按索引中指定的字段的值排序,存储特定字段或一组字段的值。

89、 什么是MongoDB中的GridFS?【考核知识点:MongoDB的GridFS】

为了存储和检索大文件,例如图像,视频文件和音频文件,使用GridFS。默认情况下,它使用两个文件fs.files和fs.chunks来存储文件的元数据和数据块。

90、多线程爬虫共封装了几个类?每个类的作用是什么?【考核知识点:线程】

两个类:爬虫类、解析类

爬虫类;定义爬取的行为,将响应数据提交给响应数据队列

解析类:定义数据解析规则并与数据库交互,将数据持久化进数据库

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值