第一章
【填空题】
网络爬虫又称网页蜘蛛或 ( 网络机器人 )
网络爬虫能够按照一定的( 规则 ),自动请求万维网站并提取网络数据。
根据使用场景的不同,网络爬虫可分为( 通用爬虫 )和( 聚焦爬虫 )两种。
爬虫可以爬取互联网上( 公开 )且可以访问到的网页信息。
【判断题】
爬虫是手动请求万维网网站且提取网页数据的程序。 ×
爬虫爬取的是网站后台的数据。×
通用爬虫用于将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。√
聚焦爬虫是“面向特定主题需求”的一种网络爬虫程序。√
通用爬虫可以选择性地爬取与预先定义好的主题相关的页面。×
第二章
【填空题】
( 搜索引擎 )是通用爬虫最重要的应用领域。
( robots.txt )文件是搜索引擎访问网站是要查看的第一个文件。
网站提供了( Sitemap.xml )文件,可以方便网站管理员通知爬虫遍历和更新网站的内容。
User-Agent表示( 用户代理 ),用于描述发出HTTP请求的的终端信息。
为防止对方从访问量上认出爬虫的身份,可以( 降低 )访问网站的频率。
【判断题】
robots.txt文件一定要放置在一个站点的根目录下。√
robots.txt文件中至少要有一条User-Agent记录。√
robots.txt文件没有实际的约束力。√
爬虫爬取网页的行为都很正当,不会受到网站的任何限制。×
针对采用了防爬虫措施的网站,爬虫是无计可施的。×
第三章
【单选题】
下列选项中,不属于请求报头的是( D )。
A、User-Agent
B、Cookie
C、Referer
D、Content-Type
下列状态码中,表示客户端的请求有错误的是( C )。
A、200
B、304
C、403
D、500
下列请求报头中,可以记载用户信息实现模拟登录的是( B )。
A、User-Agent
B、Cookie
C、Connection
D、Host
关于字符编码的类型中,用于指明浏览器可接受简体中文的是( A )
A、gb2312
B、iso-8859-1
C、utf-8
D、utf
服务器返回某个响应报头的取值如下:
Content-Type:text/html;charset=utf-8
对于上述报头所表示的含义,描述正确的是( A )。
A、客户端使用utf-8格式对资源进行解码,然后对资源进行HTML解析
B、客户端使用HTML格式对资源进行解码,然后对资源进行utf-8解析
C、客户端使用utf-8格式对资源进行编码,然后对资源进行HTML解析
D、客户端使用HTML格式对资源进行编码,然后对资源进行HTML解析
【填空题】
服务器响应了浏览器发送的请求,返回( HTML )页面。
( URl )是互联网上标准资源的地址。
客户端发送的请求消息由请求行、( 请求头部 )、空行以及请求数据4部分组成。
HTTP是一套计算机网络通信的规则,由客户端( 请求 )消息和服务器端( 响应 )消息组成。
( GET )请求的参数都显示在URL上,服务器根据该请求所包含URL中的参数来产生响应内容。
【判断题】
POST请求的安全性更高,使用场合比GET请求多。√
一旦服务器端出现错误,返回的状态码为403。×
GET请求是指向指定资源提交数据进行处理请求,数据被包含在请求体中。×
服务器可以根据请求报头中的Accept进行判断,以返回适当的文件格式给浏览器。√
通常有些网站返回的数据会出现乱码,肯定是客户端没有反馈正确的编码导致的。 ×
第四章
【单选题】
使用urlopen()方法发送请求后,服务器后返回一个( A )类型的对象。
A、HTTPResponse
B、ResponseHTTP
C、Response
D、ServiceResponse
示例程序如下:
import urllib.request
response=urllib.request.urlopen('http://python.org')
print(response.getcode())
若上述示例程序正常运行成功,则程序输出的结果为( A )
A、200
B、304
C、403
D、500
下列方法中,用于对传递的URL进行编码和解码的是( D )
A、urldecode, urlencode
B、unquote, urlencode
C、urlencode, urldecode
D、urlencode, unquote
通过加入特定的( C ),可以将爬虫发出的请求伪装成浏览器。
A、Request
B、opener
C、Headers
D、User_Agent
下列方法中,能够用来设置代理服务器的是( B )。
A、urlopen
B、ProxyHandler
C、urldecode
D、Proxy
【填空题】
一旦超过了服务器设置的( 超时 )时间,就会抛出一个超时异常。
若客户端没有连接到服务器,则使用urlopen()方法发送请求后会产生( URLError )异常。
( urllib )是Python内置的HTTP请求库,可以看作处理URL的组件集合。
如果要获取Response类中字符串形式的响应内容,可以访问( text )属性获取。
要想将爬虫程序发生的( 请求 )伪装成一个浏览器,需要自定义请求报头。
【判断题】
如果URL中包含了中文,则可以使用urlencode()方法进行编码。√
登录网站时,只有浏览器发送的请求才能获得响应内容。√
如果访问某网站的频率太高,则这个网站可能会禁止访问。√
urlopen()是一个特殊的opener,支持设置代理IP。×
urlopen()函数返回的是一个文件对象,需要调用read()方法一次性读取。√
第五章
【单选题】
下列选择中,属于非结构化数据的是( A )
A、图像
B、HTML
C、XML
D、JSON
下列选项中,属于结构化数据的是( 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、@
【填空题】
( 正则表达式 )是一个用于处理字符串的强大工具。
网页解析器可以从网页中提取出有价值的数据,或新的( URl )链接。
( XPath )表示XML路径语言,能够确定XML树结构中某一部分的位置。
路径表达式是指从某节点到某个节点或某一组节点的顺序,以( / )字符进行分隔。
lxml是Python编写的库,主要用于解析和提取( HTML )或( XML )格式的数据。
【判断题】
如果路径表达式以“/"开始,那么该路径就代表着到达某个节点的绝对路径。√
创建BeautifulSoup类实例时,如果没有明确指定解析器,那么该实例肯定会选择Python标准库。×
在使用bs4库调用find()方法查找节点时,只能将字符串作为参数。×
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 )类提供了一个适用于多线程编程的先进先出的数据结构,用于生产者和消费者
一般情况下,启动( 固定 )数量的线程爬取多个网页。
queue模块中提供了3种队列,它们唯一的区别是元素取出的( 顺序 )不同。
( 队列 )是线程间最常用的交换数据的技术。
【判断题】
优先级队列中的元素一般采取列表的形式进行存储。×
多线程要想同时爬取网页,需要准备一个待爬取网址列表。√
启动线程爬取网页,线程的数量越多越好。×
协程无须通过操作系统调度,没有线程之间的切换和创建等开销。√
如果启动线程的数量过少,则可能无法最大限度地提高爬虫的爬取速度。√
第七章
【单选题】
下列方法中,可以生成PhantomJS浏览器当前页面快照的是( D )
A、PhantomJS()
B、get()
C、find_element_by_id()
D、save_screenshot()
如果需要在页面上模拟一些鼠标操作,可以通过使用( 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
请看下面表单的示例程序:
<div id="coolestWidgetEvah">...</div>
若要使用WebDriver定位上述元素,可以使用如下( A )方法实现。
A、find_element_by_id
B、find_element_by_name
C、find_elements_by_link_text
D、find_elements_by_tag_name
【填空题】
使用了JavaScript脚本的网页,能够在( URL )不变的情况下改变网页的内容。
( Selenium )是一个Web的自动化测试工具,可以按指定的命令自动操作。
PhantomJS是一个( 无界面 )浏览器,它能将网站加载到内存并执行页面上的JavaScript。
selenium库的( WebDriver )有点儿像加载网站的浏览器,它不仅可以查找页面元素,而且可以与页面上的元素进行交互。
当浏览器使用完毕时,应使用( quit )方法关闭浏览器。
【判断题】
JavaScript无须重载页面,可直接提交表单,在页面载入多媒体文件。√
若提交表单后,网站的页面不需要重新刷新,则当前访问的网站用的是AJAX技术。√
selenium支持浏览器的功能,可以直接被用来执行指令。×
通过driver的get()方法可以将页面的内容加载到浏览器对象中,如果页面还没有加载完,此方法会一直阻塞等待。√
PhantomJS浏览器虽然不能显示页面,但是可以生成页面快照。√
第十章
【单选题】
下列框架组件中,用于从响应中提取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是用纯Python实现的一个开源( 爬虫框架 ),能够高效地爬取网站数据,提取结构性数据。
( Scheduler )组件负责接收引擎传递过来的请求,并按照某种方式整理排列和入列。
在Scrapy项目中,( items.py )文件用于定义项目的目标实体。
Scrapy使用( Item )来表示要爬取的数据。
( scrapy.Spider )是Scrapy提供的爬虫基类,创建的爬虫类需要从该类该类继承。
【判断题】
Item Pipeline主要用于处理从Spiders中获取到的Item数据。√
如果要创建一个爬虫文件,只能通过使用命令的方式来完成。×
Scrapy爬虫文件中,需要使用start_urls属性确定爬取的起始URL元组或列表。√
如果Scrapy爬虫文件中规定了爬虫的约束区域,那么不在这个区域的URL会被忽略。√
一个Scrapy爬虫项目中只能存在一个爬虫文件。×
第十一章
【单选题】
关于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 shell是一个交互式( 终端 ),可在不启动爬虫的条件下尝试及调试爬取代码。
Scrapy框架提供( scrapy.Spider )作为爬虫的基类,所有自定义的爬虫必须从这个类派生。
当Item数据被Spiders收集之后,会被传递到( Item Pipeline )。
下载中间件是处于引擎和( 下载器 )之间的一层组件,多个下载中间件可以被同时加载运行。
每个Item Pipeline组件都是一个独立的Python类,该类中的( process_item() )方法必须实现。
【判断题】
如果计算机上已经安装了IPython,那么Scrapy shell会优先使用IPython。√
如果调用process_request()方法时返回None,Scrapy将停止调用该方法。×
Scrapy的代理IP、User-Agent的切换都是通过Item Pipeline进行控制的。×
在settings.py文件中,ITEM_PIPELINES项的值默认为空。√
若ITEM_PIPELINES设置项的数值越大,则优先级越高。×