《Python爬⾍⼤数据采集与挖掘》期末考试考题汇总带答案
⼀、填空题
1、爬⾍技术的应⽤可以分为两⼤类:采集型爬⾍、监测型爬⾍。
2、根据 Web 页⾯组成结构中的信息内容的⽣成⽅式不同,可以将 Web 页⾯分为静态页⾯、动态页⾯、以及伪静态页⾯三⼤类。
3、Robots 协议为了给 Web ⽹站提供灵活的控制⽅式来决定页⾯是否能够被爬⾍采集。
4、在浏览器中打开⽹站后,在⽹站⾸页的地址后⾯添加“/”,如果⽹站设置了访问许可,按回车就可以看到⽹站的 robots 协议,即 ⽂件内容。
5、Web 信息提取包含Web 页⾯中的超链接提取和 Web 内容提取两⼤部分。
6、Web 页⾯它具有⼀定的结构,即由 HTML 标签构成的树型结构。
7、⽬前有多种 HTML 解析器的开源框架如 BeautifulSoup 等,⼤都集成了 DOM 树的解析。
8、HTTP 状态码(HTTP Status Code)是⽤来表⽰⽹页服务器 HTTP 响应状态的 3 位数字代码。 状态码包含了五种类别,即消息、成功、重定向、请求错误和服务器错误。
10、Tag 标签为 a 时属性为 href。Tag 标签为资源名称时,例如 img、audio,属性为 scr。
11、互联⽹上的 Web 页⾯可以抽象化为⼀张有向图。图的遍历就是⽤来解决节点的访问顺序问题。图的遍历算法有两种,即深度优先算法DFS 和宽度优先算法 BFS。
12、宽度优先的策略使⽤队列作为存储结构。深度优先的策略,需要采⽤堆栈作为存储结构。
13、按照链接的形式不同,可以分为绝对链接、相对链接和书签。
14、按照链接的路径指向不同,可以分为内部链接,锚点链接和外部链接。
15、按照超链接指向的资源不同,分为 Web 页⾯超链接、图⽚超链接、视频超链接等。
16、按照链接的存在⽅式不同,分为动态超链接和静态超链接。
17、关于如何进⾏节点的定位,lxml 提供了两种⽅式:xpath 和树的遍历函数。
18、在爬⾍中实现基于 Cookie 的动态交互过程可分为两个环节 Cookie 的获得或构造和将Cookie 传递到服务器。
19、⼀般情况下 ajax 返回的数据是以 json 形式封装的。
20、DNS 缓存⽤于减⼩域名到 IP 地址的映射。
21、PageRank 算法是⼀种根据⽹页之间相互的超链接计算页⾯级别的⽅法。在计算 Web 页⾯的重要性、社交⽹络中的重要⼈物识
别、⽂本中的关键词提取⽅⾯有重要应⽤。
22、动态页⾯的交互是指浏览器和 web 服务器之间的命令参数传递⽅式。按照命令参数的不同提供⽅式,主要有⽤户提供和 cookie 提
供两种⽅式。
23、URL 的发送有通过 ajax 引擎和⾮ ajax 引擎两种。
24、数据的规范化程度⽐ OLTP 中的数据要弱。
25、标准 ASCII 码使⽤七位⼆进制编码表⽰,编码范围为 0~127。
26、re 模块提供了正则表达式匹配所需要的功能。匹配和搜索、分割字符串、匹配和替换最常⽤的函数是 findall。函数返回结果为⼀个列表。
27、404 代表“NOT FOUND”,认为⽹页已经失效;503 代表“Service Unavailable”,认为⽹页临时不可访问;403 代
表“Forbidden”,认为⽹页⽬前禁⽌访问;301 代表是“Moved Permanently”,认为⽹页重定向⾄新 url。
28、Web 信息提取的三种基本思路是:基于字符串匹配的 Web 信息提取⽅法、基于 HTML结构的 Web 信息提取⽅法、基于统计的Web 信息提取⽅法。
29、Cooike 是客户端的,数据保存在客户端;Session 是服务器端的,数据保存在服务器。
视频直播网站源码30、python3 的默认编码是 unicode,可通过 encode 与 decode 来进⾏转换 。
31、主题爬⾍的应⽤场景主要有以下三⼤类:垂直搜索引擎、舆情监测、商业情报搜索。
32、主题爬⾍在普通爬⾍的基础上增加了主题定义、链接相关度估算和内容相关度计算三⼤技术实现。
33、On-Line Transaction Processing 联机事务处理过程(OLTP),也称为⾯向交易的处理过程,其基本特征是前台接收的⽤户数据可以⽴即传送到计算中⼼进⾏处理,并在很短的时间内给出处理结果,是对⽤户操作快速响应的⽅式之⼀。
34、html 标签很多,从闭合的⾓度可以分为闭合标签与空标签。
35、html 标签还可以按照在⽂档中的位置特性进⾏分类,主要分为块级标签、⾏内(内嵌)标签和⾏内-块级(内嵌-块级)标签。
36、解释 Cookie 规范: 某些⽹站为了辨别⽤户⾝份,进⾏ session 跟踪⽽储存在⽤户本地设备上的数据。
37、解释 Robots 协议:⽹络爬⾍排除协议。
38、HTTP 报⽂中存在着多⾏的内容,⼀般是由 ASCII 码串组成,各字段长度是不确定的。
39、HTTP 报⽂可分为两种:请求报⽂(客户端 → 服务器端)与响应报⽂(服务器端→客户端)。
40、协议 : //域名部分:端⼝号/⽬录/⽂件名.⽂件后缀?参数 1=值#标志&参数 2=值#标志
表⽰第⼀个参数的开始,起到分隔的作⽤。
参数的基本形式是”参数=值”,不同参数之间⽤ & 连接起来。
# 标志表⽰书签,⽤于访问⼀个 Web 页⾯中的特定部分。
41、Web 服务器端会对⽂件进⾏读取和解析,把⽂件中包含的 SSI 指令解释出来,最终⽣成 HTML ⽂档推送给客户端。与内容⽣成有关的常见指令是 include。
42、HTTP 响应报⽂与请求报⽂由起始⾏、头部(headers)以及实体(entity-body)构成。
43、HTTP 请求报⽂起始⾏<method> <request-URL> <version> ;HTTP 响应报⽂起始⾏<method> <status> <reason-phrase>。
44、Ajax 是⼀种基于 javascript 并整合 XHTML/ XML/DOM 等技术实现的客户端/服务器端动态页⾯编程框架。通常⽤于在后台与服务器进⾏少量数据交换,在不重新加载整个⽹页的情况下,对⽹页的局部进⾏更新。
hadoop的两大核心45、Ajax 触发条件:页⾯中的定时器、⿏标或键盘事件驱动。
46、⽬前主题爬⾍主要⽤到的⽅法:采⽤关键词集来描述⼀个主题、对关键词集进⾏某种划分,通过对⼦主题的描述来实现对整个主题的定义。
python请求并解析json数据47、以爬⾍⾃动登陆邮箱,查看有没有新邮件为例。为达到⽬的,需要经过安装配置、页⾯结构分析和程序实现三个步骤。
48、页⾯可以通过 POST 和 GET ⽅式来向服务器发送请求的动态参数。
49、模拟浏览器有三种实现⽅式:以模拟特定浏览器的 header 信息⽅式实现对浏览器的模拟,使⽤浏览器内核(例如 webkit),直接在浏览器上开发组件(firefox/chrome)以实现动态页⾯的采集。
50、当页⾯ JS 脚本⽐较复杂、AJAX 交互较多或存在不同页⾯之间⼤量数据交换的情况下,使⽤浏览器组件来模拟浏览器进⾏页⾯内容采集就是⽐较合适的选择了。
51、在主题爬⾍中,相关度的计算包含了链接相关度和内容相关度计算两⼤部分。在整个主题爬⾍的处理流程中起到的作⽤各不相同。但是,不管是哪⼀个,都可以归结为⼀个⽂本与主题模型的相似度计算问题。
52、⽹络连接层由 TCP Socket 连接的建⽴、数据传输以及连接管理组成 。
53、页⾯采集层⽤于对 URL 的处理。
⼆、判断题
1、问号并不作为通配符。(√)
2、HTTP/1.1 默认采⽤持久连接。(√)
datagridview获取某行某列的值3、Cookie 存储了客户端的⼀些重要信息,例如⾝份标识、所在地区等,通常是⼀个⽂本⽂件。在向服务器发送 URL 请求时,可以将⽂件内容读出,附加在 HTTP 的请求头中,可以免去⽤户输⼊信息的⿇烦。(√)
三、简答题
1、⼤数据特征的三种观点
4V:Volume、Variety、Value、Velocity(速度) ;
5V:Volume、Velocity、Variety、Veracity(准确性)、Variability(变化性) ;
7V:Volume、Velocity、Vast(巨⼤的)、Variety、Veracity、Value、Visualize 。
2、互联⽹⼤数据的特征
⼤数据类型和语义更加丰富
数据的规范化程度⽐ OLTP 中的数据要弱
数据的流动性更⼤
数据的开放性更好
数据的来源更加丰富
互联⽹⼤数据的价值体现形式更加多样化
3、监测型爬⾍的典型使⽤场景
应⽤安全监测:应⽤层安全是⽹络信息安全的重要问题之⼀。
⽹页挂马
SQL 注⼊
…
内容安全监测:⽹络信息安全的最⾼层次。
敏感信息
泄密信息
4、获取 URL ⽅法
①如果 JS 是定时重复执⾏的,可以结合页⾯数据的更新情况寻对应的 JS,单击之后,即可看到关
pointing于该 JS 发送 URL 的请求头和响应信息,如下页图所⽰. 图中 request URL 对应的值即为请求数据的 URL。
②进⼊开发者模式之后,通过⿏标点击操作,可以在评论信息页⾯检查对应的请求过程。通过 network 下的 XHR 选项可以在请求头的refer 属性中到评论的 URL。
5、什么是 HTTP?什么是 session?什么是 cookie?session 和 cookie 有什么区别?
HTTP 是⼀种⽆状态协议,服务器没有办法单单从⽹络连接上⾯知道访问者的⾝份,为了解决这个问题,就诞⽣了 Cookie。
Cookie 实际上是⼀⼩段的⽂本信息。客户端请求服务器,如果服务器需要记录该⽤户状态,就使⽤ response 向客户端浏览器颁发⼀个Cookie。客户端浏览器会把 Cookie 保存起来。当浏览器再请求该⽹站时,浏览器把请求的⽹址连同该 Cookie ⼀同提交给服务器。服务器检查该 Cookie,以此来辨认⽤户状态。服务器还可以根据需要修改 Cookie 的内容。实际就是颁发⼀个通⾏证,每⼈⼀个,⽆论谁访问都必须携带⾃⼰通⾏证。这样服务器就能从通⾏证上确认客户⾝份了。这就是 Cookie 的⼯作原理 cookie 可以让服务端程序跟踪每个客户端的访问,但是每次客户端的访问都必须传回这些 Cookie,如果 Cookie 很多,这⽆形地增加了客户端与服务端的数据传输量,⽽Session 的出现正是为了解决这个问题。同⼀个客户端每次和服务端交互时,不需要每次都传回所有的 Cookie 值,⽽是只要传回⼀个ID,
这个 ID 是客户端第⼀次访问服务器的时候⽣成的, ⽽且每个客户端是唯⼀的。这样每个客户端就有了⼀个唯⼀的 ID,客户端只要传回这个 ID 就⾏了,这个 ID 通常是 NANE 为 JSESIONID 的⼀个 Cookie。
cookie 和 session 的区别 :
具体来说 cookie 机制采⽤的是在客户端保持状态的⽅案,⽽ session 机制采⽤的是在服务器端保持状态的⽅案。同时我们也看到, 由于采⽤服务器端保持状态的⽅案在客户端也需要保存⼀个标识,所以 session 机制可能需要借助于 cookie 机制来达到保存标识的⽬的cookie 不是很安全,别⼈可以分析存放在本地的 cookie 并进⾏ cookie 欺骗,考虑到安全应当使⽤ session
session 会在⼀定时间内保存在服务器上。当访问增多,会⽐较占⽤你服务器的性能,考虑到减轻服务器性能⽅⾯,应当使⽤ cookie单个cookie 保存的数据不能超过 4k,很多浏览器都限制⼀个站点最多保存 20 个 cookie。 可以将登陆信息等重要信息存放为 session。
实现 Session 机制:在抓取页⾯时,如果涉及动态页⾯,可能需要考虑在爬⾍中实现 session 机制。
Cookie 处理:最终的 URL 命令结果是通过 HTTP 协议数据包发送的,在头部信息中可以携带 cookie 信息。
6、Cookie 和 Session(书中给出的的答案)
Cookie 是由服务端⽣成,并在客户端进⾏保存和读取的⼀种信息,Cookie 通常以⽂件形式保存在⽤户端。查看 Cookie 的⽅法,随浏览器不同⽽不同。Session 是另⼀种常见的在客户端与服务器之间保持状态的机制,在⼀定程度上解决或缓解了上述问题,准确理解其技术原理有利于设计更好的动态爬⾍。Session 可以看作是 Web 服务器上的⼀个内存块,可以将原本保存在 Cookie 中的⽤户信息存储在该内存块中。⽽客户端和服务器之间则依靠⼀个全局唯⼀标识 Session_id 来访问Session 中的⽤户数据,这样只需要在 Cookie 中保存
Session_id 就可以实现不同页⾯之间的数据共享。可见,在 Session 机制下,除了 Session_id 外,其他⽤户信息并不保存到 Cookie ⽂件中,从⽽解决了上述两个问题。css3旋转是什么意思
7、四种典型的应⽤架构
Client/Server:客户端可以是各种浏览器,也可以是爬⾍程序。
Client/Server/Database:在⽹络爬⾍技术中,这种架构⽀持了动态⽹页的实现
Web 服务器集:针对⼤量⽤户并发访问的应⽤,可保障⽤户访问的体验度和容错性,web 服务器通常需要进⾏⾼可⽤和负载均衡设计。虚拟主机架构:虚拟主机是另⼀种常见的 Web 应⽤架构,它是指
在⼀台服务器⾥配置多个⽹站,使得每个⽹站看起来具有独⽴的物理计算机。虚拟主机的实现⽅法有三种:(1)基于 IP 地址的⽅法、基于端⼝的⽅法、基于主机名的⽅法。
8、普通爬⾍的爬⾍流程
具体的爬⾍流程:
(1)Web 服务器连接器向指定的 Web 服务器发起连接请求,再建⽴爬⾍和 Web 服务器之间的⽹络连接。该连接就作为后续发送 URL 和接收服务器返回信息的通路,直到爬⾍或服务器断开该连接。在连接的过程中,为了减⼩域名到 IP 地址的映射时间消耗,爬⾍端需要使⽤ DNS 缓存。
(2)在该连接上向 Web 服务器发送 URL 页⾯请求命令,并等待 Web 服务器的响应。对于⼀个新的
⽹站,在发送 URL 请求之前,应当检查其根⽬录下是否有 ⽂件。如果有,则应当对该⽂件进⾏解析,建⽴服务器访问要求和 URL 许可列表。同时需要处理各种可能的⽹络异常、各种可能 Web 服务器异常,例如 HTTP404 错误等。当 web 服务器反馈页⾯内容即可保存页⾯信息,并将 HTML 编码的⽂本信息送给下⼀个处理步骤。
(3)对获取到的 HTML ⽂件进⾏ URL 提取和过滤,由页⾯解析器对 HTML ⽂本进⾏分析,提取其中的所包含的 URL。进⼀步,根据 的访问许可列表、是否已经爬⾏过等基本规则对提取出来的 URL 进⾏过滤,以排除掉⼀些不需要获取的页⾯。
(4)根据⼀定的爬⾏策略,将每个 URL 放⼊到 URL 任务中的适当位置。先后次序很重要,需要考虑 web 服务器在访问频率、时间等⽅⾯的要求及连接建⽴的时间消耗等问题。
(5)当某个 URL 对应的页⾯爬⾏完毕后,Web 服务器连接器从 URL 爬⾏任务获得新的URL,上述过程不断地重复进⾏,直到爬⾏任务为空,或者⽤户中断为⽌。
9、动态页⾯内容⽣成⽅式
动态页⾯区别于静态页⾯的最主要特征是页⾯内容的⽣成⽅式,动态页⾯的内容⽣成⽅式可以分成两类,即服务端⽣成、客户端⽣成。
服务器⽣成:这种内容⽣成⽅式中,页⾯的主要内容的结构和表现⽅式⼀般是分离的。页⾯主要内容可以存储在各种数据库系统中,⽽决定结构和表现⽅式的 HTML 标签和语句则是存储在 web 服务器上,因此在应⽤架构上采⽤的是 client/server/database 模式。
客户端⽣成:根据这种内容⽣成⽅式,内容是在客户端上⽣成,⽽客户端主要是浏览器。受限于浏览器的能⼒,客户端⽣成的内容⼀般是轻量级的、局部的,例如给⽤户提⽰警告信息、显⽰定时时间等。在这种⽣成⽅式中,Web 页⾯中需要嵌⼊⼀定脚本或插件。通过在浏览器内执⾏这些脚本或插件功能,实现 Web 页⾯内容的⽣成,并进⾏动态更新。
10、动态⽹页采集技术类型
动态⽹页主要的采集技术可以归纳为以下四种类型。
(1)构造带参数的 URL,利⽤参数传递动态请求;
(2)构造 Cookie 携带参数,利⽤ HTTP 头部传递动态请求的参数;
(3)离线分析 Ajax 的动态请求,使⽤静态页⾯采集技术,或者通过 Cookie 、Post 等形式发送请求参数;(使⽤最⼴泛)
(4)模拟浏览器技术。
11、Web 服务器连接器模块主要功能的实现,可以⽤如下的流程来描述。
输⼊:URL,形式为: http(https)://域名部分:端⼝号/⽬录/⽂件名.⽂件后缀,或 http(https)://域名部分:端⼝号/⽬录/ 其中,⽬录可以包含多层⼦⽬录。
处理过程:
(1) 从 URL 中提取域名和端⼝号,如果端⼝号为空,则设置为默认的端⼝号,即 80;
(2) 以域名和端⼝号为参数,创建 Socket 连接;
(3) 连接建⽴后,检查服务器的根⽬录是否存在 ⽂件;
(4) 如果存在则解析 ⽂件,⽣成许可列表和服务器对访问要求的参量;
(5) 根据许可列表和访问时间限定,如果允许的话,则向服务器发送 URL 请求;
(6) 等待服务器响应;
(7) 进⾏异常处理,针对各种已知的 HTTP 标准错误代码,做好预案;
(8) 接收服务器返回的数据,把数据保存到⽂件中;
(9) 断开⽹络连接。
输出:页⾯的 HTML ⽂件
12、是否可以将⾃⼰的爬⾍的 User-agent 设置为知名爬⾍呢?
从代码的⾓度看,没有⼈会限制你使⽤什么样的 User-agent,就是上⾯的例⼦。实际上,不断变换 User-agent 的值也是很多不友好爬⾍为了躲避服务器的检测的常⽤做法。但是这种做法是⾮常不可取的,它扰乱了 Web 服务器的正常判断,就可能使得某种知名爬⾍被检测出来不遵守 Robots 协议⽽产⽣纠纷。
13、基于统计的 Web 内容抽取⽅法 其基本步骤如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论