解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫(选择题、填空题、判断题)(第1、2、3、4、5、6、7、10、11章)

第一章

【填空题】

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

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

根据使用场景的不同,网络爬虫可分为( 通用爬虫 )和( 聚焦爬虫 )两种。

爬虫可以爬取互联网上( 公开 )且可以访问到的网页信息。

【判断题】

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

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

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

聚焦爬虫是“面向特定主题需求”的一种网络爬虫程序。

通用爬虫可以选择性地爬取与预先定义好的主题相关的页面。×

第二章

【填空题】

(  搜索引擎 )是通用爬虫最重要的应用领域。

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设置项的数值越大,则优先级越高。×

  • 9
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python网络爬虫是一种通过编写程序自动获取互联网上数据的技术。其核心技术是使用网络请求库发送HTTP请求,获取到网页的HTML源代码,然后通过解析库对HTML进行解析,提取出需要的数据。常用的网络库有urllib、requests等,解析库有BeautifulSoup、XPath等。 Scrapy框架是一个基于Python的高级爬虫框架,它提供了一系列的工具和组件,帮助开发者快速构建以爬取网页数据为目标的应用程序。Scrapy框架将整个爬虫过程进行了模块化的设计,并提供了强大的调度器,可以同时进行多个请求的发送和处理。它还支持多种存储方式和数据处理功能,方便对爬取的数据进行保存和分析。 分布式爬虫框架是一种将多个爬虫节点进行集群化管理的框架。通过将任务分配给不同的节点,可以加速爬虫的执行速度,提高效率。分布式爬虫框架通常使用消息队列作为任务的调度心,节点之间通过消息队列进行通信。常见的分布式爬虫框架Scrapy-Redis、Celery等。 关于分布式爬虫的课本习题,通常会涉及到如何实现分布式爬虫的功能。习题可能包括设置分布式任务队列、设计任务分发策略、确定数据存储方案等。学生需要根据课本提供的指导和自己的理解,选择合适的技术方案和工具,完成习题要求。习题的目的是让学生加深对分布式爬虫原理和技术的理解,并能够独立解决实际问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值