当前位置:   article > 正文

解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫(期末重点题目)_使用urlopen()方法发送请求后,服务器会返回一个(a )类型的对象

使用urlopen()方法发送请求后,服务器会返回一个(a )类型的对象

第一章

网络爬虫又称网页蜘蛛或  网络机器人 )

网络爬虫能够按照一定的( 规则 ),自动请求万维网站并提取网络数据

爬虫是手动请求万维网网站且提取网页数据的程序。(×

爬虫爬取的是网站后台的数据。(×

通用爬虫用于将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。(

简答题:

简述通用爬虫和聚焦爬虫。

1.通用爬虫又称全网爬虫,主要用于将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。聚焦网络爬虫又称主题网络爬虫,用于选择性地爬取那些与预先定义好的主题相关的页面。

2.通用爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低。聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。

第二章

 robots.txt )文件是搜索引擎访问网站是要查看的第一个文件。

robots.txt文件没有实际的约束力。(

爬虫爬取网页的行为都很正当,不会受到网站的任何限制。(×

针对采用了防爬虫措施的网站,爬虫是无计可施的。(×

简答题

简述通用爬虫和聚焦爬虫爬取网页的流程。

通用爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。

聚焦爬虫需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接,并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。

请举出一些针对防爬虫的应对策略。

伪装User-agent、使用代理IP、降低访问频率、识别验证码

第三章

下列状态码中,表示客户端的请求有错误的是( C )。

A、200

B、304

C、403

D、500

下列请求报头中,可以记载用户信息实现模拟登录的是( B )。

A、User-Agent

B、Cookie

C、Connection

D、Host

客户端发送的请求消息由请求行、( 请求头部 )、空行以及请求数据4部分组成。

一旦服务器端出现错误,返回的状态码为403。(×

GET请求是指向指定资源提交数据进行处理请求,数据被包含在请求体中。(×

服务器可以根据请求报头中的Accept进行判断,以返回适当的文件格式给浏览器。(

简答题

简述浏览器加载网页的过程

  1. 浏览器通过DNS服务器查找域名对应的IP地址
  2. 向IP地址对应的Web服务器发送请求
  3. Web服务器响应请求,发回HTML页面
  4. 浏览器解析HTML内容,并显示出来

HTTP通信由哪些部分组成

客户端请求消息和服务器端响应消息

第四章

使用urlopen()方法发送请求后,服务器后返回一个( A )类型的对象。

A、HTTPResponse

B、ResponseHTTP

C、Response

D、ServiceResponse

下列方法中,用于对传递的URL进行编码和解码的是( D )

A、urldecode, urlencode

B、unquote, urlencode

C、urlencode, urldecode

D、urlencode, unquote

通过加入特定的( C ),可以将爬虫发出的请求伪装成浏览器。

A、Request

B、opener

C、Headers

D、User_Agent

若客户端没有连接到服务器,则使用urlopen()方法发送请求后会产生( URLError )异常。

 urllib )是Python内置的HTTP请求库,可以看作处理URL的组件集合。

如果要获取Response类中字符串形式的响应内容,可以访问( text )属性获取。

登录网站时,只有浏览器发送的请求才能获得响应内容。(

如果访问某网站的频率太高,则这个网站可能会禁止访问。(

urlopen()是一个特殊的opener,支持设置代理IP。(×

简答题

简述urllib和requests的异同

相同点:它们都是Python提供的HTTP请求库,能够通过获取服务器中网页源码

不同点:urllib是Python内置的HTTP请求库,导入后方可使用;requests是Python提供的第三方库,需要额外进行安装。Requests是在urllib的基础上进行了高度的封装,它不仅继承了urllib的所有特性,而且还支持一些其他的特性

第五章

下列选项中,属于结构化数据的是( D )

A、图像

B、文本

C、办公文档

D、JSON

下列解析技术中,用于解析JSON文档的是( B

A、XPath

B、JSONPath

C、Beautiful Soap

D、正则表达式

下列Python库或模块中,支持正则表达式语法的是( C )。

A、bs4

B、lxml

C、re

D、Json

下列选取节点的表达式中,代表着从根节点开始选取的是( A )。

A、/

B、//

C、name

D、@

 正则表达式 )是一个用于处理字符串的强大工具。

XPath )表示XML路径语言,能够确定XML树结构中某一部分的位置。

路径表达式是指从某节点到某个节点或某一组节点的顺序,以( / )字符进行分隔。

如果路径表达式以“/"开始,那么该路径就代表着到达某个节点的绝对路径。(

创建BeautifulSoup类实例时,如果没有明确指定解析器,那么该实例肯定会选择Python标准库。(×

在使用bs4库调用find()方法查找节点时,只能将字符串作为参数。(×

JSONPath是一种信息抽取类库,用于从JSON文档中抽取指定信息。(

路径表达式是唯一的,只能从根节点开始搜索。(×

简答题

简述什么是结构化数据和非结构化数据

非结构化数据是指数据结构不规则或不完整,没有预定义的数据模型,不

方便使用数据库二维逻辑来表现的数据,包括所有格式的办公文档、文本、图

像等。

结构化数据又称作行数据,是由二维表结构来逻辑表达和实现的数据,严

格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理,包括

HTML、XML和 JSON。

正则表达式、xpath、Beautiful Soup 和 JSONPath 有什么区别

正则表达式是基于文本的特征来匹配或查找指定的数据,它可以处理任何

格式的字符串文档,类似于模糊匹配的效果。

XPath和 Beautiful Soup是基于 HTML/XML文档的层次结构来确定到达指

定节点的路径,所以它们更适合处理层级比较明显的数据。

JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具。

第六章

下列选项中,表示先进先出队列的类是( A )。

A、Queue

B、LifoQueue

C、PriorityQueue

D、EmptyQueue

下列方法中,用于阻塞当前线程的是( A )。

A、join()

B、put()

C、qsize()

D、get()

如果从空队列中取数据,则会抛出( B )异常。

A、Full

B、Empty

C、Used

D、Half

LifeQueue类表示 ( 后进先出 )队列,代表后进入的元素先出来。

优先级队列会按照级别顺序取出元素,级别最( )是最先出来。

Queue )类提供了一个适用于多线程编程的先进先出的数据结构,用于生产者和消费者线程之间的信息传递。

多线程要想同时爬取网页,需要准备一个待爬取网址列表。(

启动线程爬取网页,线程的数量越多越好。(×

协程无须通过操作系统调度,没有线程之间的切换和创建等开销。(

第七章

如果需要在页面上模拟一些鼠标操作,可以通过使用( B )类来实现。

A、WebDriver

B、ActionChains

C、Select

D、Ajax

下列选项中,关于页面等待描述错误的是( B )。

A、如果实际页面响应时间过长,那么某个元素被代码引用后可能会抛出NullPointer异常

B、显式等待就是设置一个全局的最大等待时间

C、显式等待是指定某一条件,直到这个条件成立后才继续执行

D、隐式等待就是等待特定的时间

阅读下面一段示例程序:

for handle in driver.window_handles:

     driver.switch_to_window(handle)

上述程序可以用作( C )操作

A、填充表单

B、弹窗处理

C、页面切换

D、获取页面的Cookie

使用了JavaScript脚本的网页,能够在( URL )不变的情况下改变网页的内容。

 Selenium )是一个Web的自动化测试工具,可以按指定的命令自动操作。

selenium库的( WebDriver )有点儿像加载网站的浏览器,它不仅可以查找页面元素,而且可以与页面上的元素进行交互。

若提交表单后,网站的页面不需要重新刷新,则当前访问的网站用的是AJAX技术。

selenium支持浏览器的功能,可以直接被用来执行指令。×

通过driver的get()方法可以将页面的内容加载到浏览器对象中,如果页面还没有加载完,此方法会一直阻塞等待。

简答题

什么是动态网页

动态网页是指在网页中依赖JavaScript脚本动态加载数据的网页。与传统单页面表单事件不同,使用了JavaScript脚本的网页能够在URL不变的情况下改变网页的内容。

简诉什么是显示等待和隐式等待

Selenium供种等待方式,一种隐式等,一种显式等待。隐式等待是等待特定的时间,显式等待是指定某一条件,直到这个条件成立后才继续执行。

第十章

下列框架组件中,用于从响应中提取Item数据和URL的是( C )。

A、Scheduler

B、Downloader

C、Spiders

D、Item Pipeline

下列文件中,用于存储Scrapy项目设置信息( A )

A、settings.py

B、scrapy.cfg

C、pipelines.py

D、items.py

scrapy.Item的子集中,可以添加( C )类型的属性来表示爬虫项目的实体数据。

A、scrapy.Item

B、scrapy.Spider

C、scrapy.Field

D、scrapy.Pipeline

下列命令中,用于运行爬虫的是( C )。

A、scrapy startproject mySpider

B、scrapy genspider itcast "itcast.cn"

C、scrapy crawl itcast

D、scrapy crawl itcast -o teachers.json

一个Scrapy项目中可以有多个爬虫,每个爬虫在执行时可以按照( B )属性来区分。

A、allowed_domains

B、name

C、start_urls

D、parse

Scrapy使用( Item )来表示要爬取的数据。

( scrapy.Spider )是Scrapy提供的爬虫基类,创建的爬虫类需要从该类该类继承。

如果要创建一个爬虫文件,只能通过使用命令的方式来完成。×

Scrapy爬虫文件中,需要使用start_urls属性确定爬取的起始URL元组或列表。

如果Scrapy爬虫文件中规定了爬虫的约束区域,那么不在这个区域的URL会被忽略。

简答题

什么是Scrapy

Scrapy是一个适用爬取网站数据、提取结构性数据的应用程序框架,它可以应用在广泛领域:Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

简单描述一下scrapy框架的运作流程

(1)引擎向Spiders请求第个要爬取的URL(s)。

(2)引擎从Spiders中获取到第一个要爬取的URL,封装成Request并交给调度器。

(3)引擎向调度器请求下一个要爬取的Request。

(4)调度器返回下一个要爬取的Request给引擎,引擎将Request 通过下载中间件转发给下载器。

(5)一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件发送给引擎。

(6)引擎从下载器中接收到Response并通过Spider中间件发送给Spider处理。

(7)Spider处理Response并返回爬取到的Item及新的Request给引擎。

(8)引擎将爬取到的Item给Item Pipeline,将Request给调度器。

(9)从第(2)步开始重复,直到调度器中没有更多的Request。

第十一章

关于Scrapy终端的说法中,正确的是( B )

A、Scrapy shell是一个非交互式终端

B、在不启动爬虫的情况下,可以使用Scrapy shell调度爬取代码

C、Scrapy shell可以用来测试正则表达式或CSS表达式

D、Python终端和IPython共享的情况下,Scrapy shell会优先选择标准的Python终端

下列关于Spiders爬取循环的描述中,错误的是( A )

A、当下载完毕返回时会生成一个Response,它会作为回调函数的返回值

B、如果回调函数返回一个Request,则该对象会经过Scrapy处理,下载相应的内容,并调用设置的回调函数

C、在回调函数中,可以使用解析器来分析网页内容,并根据分析的数据生成Item

D、Spider返回的item将被存到数据库或文件中

下列选项中,包含了爬虫允许爬取的域名列表的是( D )

A、parse

B、name

C、start_urls

D、allowed_domains

请阅读下列一个ITEM_PIPELINES配置项的样例:

ITEM_PIPELINES={

    'mySpider.pipelines.DemoPipeline': 300,

    'mySpider.pipelines.DemoJsonPipeline': 500,

    'mySpider.pipelines.DemoCSVPipeline': 700,

    'mySpider.pipelines.DemoMongoPipeline': 900,

}

上述示例中,( D )管道会优先执行?

A、DemoMongoPipeline

B、DemoCSVPipeline

C、DemoJsonPipeline

D、DemoPipeline

下列设置项中,能够控制爬取网站使用的用户代理的是( C )

A、PROXIES

B、ITEM_PIPELINES

C、USER_AGENT

D、COOKIES_ENABLED

Scrapy框架提供( scrapy.Spider )作为爬虫的基类,所有自定义的爬虫必须从这个类派生。

若ITEM_PIPELINES设置项的数值越大,则优先级越高(×

第四章的编程题

#导入requests库

import requests

#请求的URL路径和查询参数

url="http://www.baidu.com/s" param={"wd":"传智播客"}#请求报头

headers={"User-Agent":"…"}

#发送GET请求,返回一个响应对象

response =quests.get(url, params-param, headers-headers)

#查看响应的内容

print(response.text)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/602301
推荐阅读
相关标签
  

闽ICP备14008679号