Python网络爬虫与数据采集 试题及答案 共2套_第1页
Python网络爬虫与数据采集 试题及答案 共2套_第2页
Python网络爬虫与数据采集 试题及答案 共2套_第3页
Python网络爬虫与数据采集 试题及答案 共2套_第4页
Python网络爬虫与数据采集 试题及答案 共2套_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python网络爬虫与数据采集试题选择题(每题2分)1、下列哪个选项不属于HTTP协议的请求方法?(B)GETPUSHPUTPOST下列哪个HTML标签可以设置超链接?(C)<p><div><a><h1>正则表达式“\d{3}-\d{8}|\d{4}-\d{8}”能匹配下列哪个字符串?(A)010-123456780432-12345670101234567804321234568Requests库中,可以查看响应状态码的方法是(D)textencodingcookiesstatus_code关于JavaScript说法不正确的是(B)JavaScript是一种面向对象、动态类型的解释性语言JavaScript主要运行在网站服务器上浏览器中的页面是在HTML的基础上经过JavaScript加工处理后生成的JavaScript可以写在HTML的<script>标签中下列NumPy方法中,能够将两个二维数组横向拼接的是(D)matinvvstackhstack以下不是Scrapy框架组件的是(C)‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬EngineSchedulerProcesserPipeline在Scrapy框架中,Downloader下载页面内容后结果经Engine发送到哪个组件?‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬(A)‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬SpidersPipelineScheduler以上均不正确Scrapy项目的settings.py文件中,指定log的最低级别的设置项是(C)BOT_NAMEDOWNLOAD_DELAYLOG_LEVELUSER_AGENTRequestHeader中指定是否需要持久连接的是(D)AcceptRefererRangeConnection判断题(每题2分)Python字符串操作中的strip方法可以去掉字符串左、右侧的空格(√)python_whois库可以查询网站所有者的相关信息(√)正则表达式中“$”匹配前面的子表达式0次或1次(x)SQL是一种小巧易用的轻量型关系数据库系统(x)pandas中的Series数据类型的特点是相比普通的一维数组能存放更多数据(x)Matplotlib可以用于绘制图表。(√)Selenium是一个专门用于开发Python爬虫的浏览器(x)Selenium中模拟键盘输入的函数是send_keys()(√)Python自带的单元测试模块是unittest(√)某同学认为自己开发的爬虫对网站的影响很小,可以忽略robots.txt中的内容(x)三、填空题(每题2分)Robots协议旨在让网站访问者(或访问程序)了解该网站的信息抓取限制。HTTP请求中的POST方法向指定资源提交数据进行处理请求。正则表达式中表示匹配任意数字的是“[0-9]”。Chrome开发者工具中的Sources面板主要用来调试JavaScript。网络API使用约定XML和JSON格式呈现数据。Redis是一个开源的键值对存储数据库。Selenium可以操纵浏览器进行一些类似于普通用户的行为。浏览器一般把Cookie数据放在HTTP请求中的Header数据中。PyQuery可以类似jQuery的形式解析网页,并支持CSS选择器。验证码的英文名称缩写为CAPTCHA。四、简答题(每题4分)1.请使用正则表达式匹配下列字符串(1)只能输入数字。(2)只能输入非零的正整数(3)只能输入长度为3的字符(4)只能输入由26个大写英文字母组成的字符串(5)只能输入由26个英文字母组成的字符串(1)^[0-9]*$(2)^"+?[1-9][0-9]*$(3)^.{3}$(4)^[A-Z]+$(5)^[A-Za-z]+$(每点1分)请简述HTTP请求中的GET、HEAD、POST、PUT和DELETE方法(4分)(1)GET:指定的页面信息,并返回实体主体。(2)HEAD:类似GET请求,只不过返回的响应中没有具体的内容,用于获取报头。(3)POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。(4)PUT:从客户端向服务器传送的数据取代指定的文档的内容。(5)DELETE:请求服务器删除指定的页面。(每点1分)请举例说明5种反爬虫的方式(4分)识别RequestHeaders:通过验证headers中的User-Agent信息来判定当前访问是否来自常见的界面浏览器。更复杂的headers验证则会要求验证Referer、Accept-encoding等信息。验证码:辨别计算机程序和人类用户的不同,广泛用于限制异常访问。限制或封禁IP地址:判定为爬虫后限制甚至封禁来自当前IP地址的访问。更改服务器返回的信息:通过加密信息、返回虚假数据等方式保护服务器返回的信息。账号限制:只有已登录的账号才能够访问网站数据。(每点1分)请简述Scrapy包含的组件及其功能。(至少举出5个组件)(4分)引擎(Engine):用于处理整个系统的数据流处理,触发事务,是框架的核心。调度器(Scheduler):用于接受引擎发送的请求,将请求放入队列中,并在引擎再次请求的时候返回。它决定下一个要抓取的网址,同时担负着网址去重这一重要工作。下载器(Downloader):用于下载网页内容,并将网页内容返回给爬虫。它的基础是twisted,一个Python网络引擎框架。爬虫(Spiders):用于从特定的网页中提取自己需要的信息,即Scrapy中所谓的实体(Item);也可以从中提取链接,让Scrapy继续抓取下一个页面。管道(Pipeline):负责处理爬虫从网页中抽取的实体,主要的功能是持久化信息、验证实体的有效性、清洗信息等。当页面被爬虫解析后,将被发送到管道,并经过特定的程序来处理数据。(每点1分)5.请说明Scrapy爬虫的工作过程?(4分)第1步,引擎打开一个网站,找到处理该网站的爬虫,并向该爬虫请求第一个要抓取的URL。第2步,引擎从爬虫中获取到第一个要抓取的URL并在调度器中以requests调度。第3步,引擎向调度器请求下一个要抓取的URL。第4步调度器返回下一个要抓取的URL给引擎,引擎将URL通过下载器中间件转发给下载器。一旦页面下载完毕,下载器会生成一个该页面的Responses,并将其通过下载器中间件发送给引擎。引擎从下载器中接收到Responses并通过爬虫中间件发送给爬虫处理。之后爬虫处理Responses并返回抓取的Item及发送(跟进的)新的Requests给引擎。引擎将抓取的Item传递给管道,将(爬虫返回的)Requests传递给调度器。重复第2步开始的过程直到调度器中没有更多的Requests,最终引擎关闭网站。五、应用题(20分)1.请使用Matplotlib绘制[-π,π]区间内的余弦函数图像,要求曲线颜色为红色。解答:frommatplotlibimportpyplotimportnumpyasnpx=np.linspace(-np.pi,np.pi)pyplot.plot(x,np.cos(x),color='red')pyplot.show()2.请使用Scrapy框架编写Python程序,爬取豆瓣网首页()上所有a标签的文字内容。解答:#Items.pyclassTextItem(scrapy.Item):text=scrapy.Field()#DoubanSpider.pyimportscrapyfromscrapy.selectorimportSelectorfrom..itemsimportTextItemclassDoubanspiderSpider(scrapy.Spider):name='DoubanSpider'allowed_domains=['']start_urls=['/']defparse(self,response):item=TextItem()hltext=response.xpath('//a/text()').extract()print("Textis"+''.join(hltext))item['text']=hltextreturnitem试题及答案1.Python爬虫的作用是什么?(B)A.爬取网页上的图片B.爬取网页上的文本C.爬取网页上的视频D.爬取网页上的音频2.以下哪个不是Python爬虫常用的库?(D)A.requestsB.BeautifulSoupC.ScrapyD.Pygame3.以下哪个不是HTTP协议中的请求方法?(D)A.GETB.POSTC.DELETED.UPDATE4.以下哪个正则表达式可以匹配所有以数字开头的字符串?(A)A.^\d+$B.^\d*$C.^\d+$D.^\d{1,}$5.以下哪个不是BeautifulSoup库中常用的解析器?(D)A.lxmlB.html.parserC.xmlD.json6.以下哪个XPath表达式可以选取所有class属性为"example"的元素?(A)A.//*[@class="example"]B.//*[class="example"]C.//*[@class=="example"]D.//*[@*]7.以下哪个不是Python网络爬虫的常用爬取策略?(C)A.深度优先策略B.广度优先策略C.贪心策略D.随机策略8.以下哪个不是Python网络爬虫的常用反爬机制?(D)A.IP代理池B.User-Agent伪装C.验证码识别D.数据加密9.以下哪个不是Python网络爬虫的常用反反爬机制?(C)A.动态IP代理池B.随机User-Agent伪装C.模拟登录验证机制D.数据解密10.Python爬虫中常用的数据处理工具有哪些?(D)A.pandas库B.numpy库C.matplotlib库D.以上所有在字符串前添加r可使字符串不经过转义(√)可以直接通过BeautifulSoup或tag对象实现BeautifulSoup中find_all()方法的功能(√)HTTP所有状态码的第一个数字代表了响应的五种状态之一(√)HTTP状态码中,200表示请求已成功,数据随此响应返回(√)在XPath中,希望选取此节点的所有子节点,应该使用”//”(√)在XPath中,希望选取所有名称为”title”的子节点,应该使用”//title”(√)在XPath中,希望选取所有名称为title且属于bookstore元素的元素,应该使用”//bookstore/title”(√)在XPath中,希望选取所有价格大于或等于30且小于40的书应该使用”//book[price>=30andprice<40]”(√)正则表达式中,使用”a.*”来匹配任意以字母a开头的字符串(√)BeautifulSoup库可以通过属性名和属性值来查找HTML或XML文件中的元素,比如使用soup.find_all(attrs={"class":"book"})来查找所有属性名为book的元素,返回值是一个列表(√)在浏览器中打开网站后,在网站首页的地址后面添加/robots.txt,如果网站设置了访问许可,按回车就可以看到网站的robots

协议,即

robots.txt

文件内容。Web页面它具有一定的结构,即由HTML标签构成的树型结构。HTTP状态码是用来表示网页服务器HTTP响应状态的3位数字代码。状态码包含了五种类别,即消息、成功、重定向、请求错误和服务器错误.404代表“NOTFOUND”,认为网页已经失效;503代表“ServiceUnavailable”,认为网页临时不可访问;403代表“Forbidden”,认为网页目前禁止访问;301代表是“MovedPermanently”,认为网页重定向至新url。Requests模块中,headers参数的作用是模拟浏览器若想要读写模式打开文件,应该使用a+Cooike是客户端的,数据保存在客户端;Session是服务器端的,数据保存在服务器。使用matplotlib绘制散点图,使用的函数是scatter()html标签从闭合的角度可以分为闭合标签与空标签。按照链接的存在方式不同,分为动态超链接和静态超链接。什么是爬虫?爬虫是一种按照一定的规则,自动地抓取互联网上网页中相应信息,然后把抓取的信息存储到自己的计算机上的程序或脚本。爬虫的流程是什么?爬虫的流程一般包括发送请求、解析响应、存储数据三个步骤。Python中常用的爬虫库有哪些?常用的爬虫库有urllib、Requests、BeautifulSoup、Scrapy等。写爬虫是用单线程好还是多线程好?为什么?多线程。IO密集型任务,多线程能够有效提升效率(单线程下有IO操作会进行IO等待,造成不必要的时间浪费,而开启多线程能在线程A等待时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论