《Python网络爬虫与数据采集 试题及答案 共2套.docx》由会员分享,可在线阅读,更多相关《Python网络爬虫与数据采集 试题及答案 共2套.docx(7页珍藏版)》请在第一文库网上搜索。
1、Python网络爬虫与数据采集试题一、选择题(每题2分)1、下列哪个选项不属于HTTP协议的请求方法?(B)A. GETB. PUSHC. PUTD. POST2、下列哪个HTM1标签可以设置超链接?(C)A. B. C. D.3、正则表达式“d3d8d4d8能匹配下列哪个字符串?(A)A. 010-12345678B. 0432-1234567C. 01012345678D.043212345684、ReqUeStS库中,可以查看响应状态码的方法是(D)A. textB. encodingC. cookiesD. status_code5、关于JaVaSCriPt说法不正确的是(B)A. J
2、avaScript是一种面向对象、动态类型的解释性语言B. JavaScript主要运行在网站服务器上C.浏览器中的页面是在HTM1的基础上经过JaVaSCriPt加工处理后生成的D.JavaScript可以写在HTM1的标签中6、下列NUmPy方法中,能够将两个二维数组横向拼接的是(D)A. matB. invC. vstackD. hstack7、以下不是SCraPy框架组件的是(C)A. EngineB. Schedu1erC. ProcesserD. Pipe1ine8、在SCraPy框架中,DoWnIOader卜载页面内容后结果经Engine发送到哪个组件?(A)A. Spiders
3、B. Pipe1ineC. Schedu1erD.以上均不正确9、Scrapy项目的settings.py文件中,指定Iog的最低级别的设置项是(C)A. BOTNAMEB. DOWN1OAD_DE1AYC. 1OG_1EVE1D. USERAGENT10、ReqUeStHeader中指定是否需要持久连接的是(D)A. AcceptB. RefererC.RangeD.Connection二、判断题(每题2分)1、PythOn字符串操作中的StriP方法可以去掉字符串左、右侧的空格(J)2、PythOn_whois库可以查询网站所有者的相关信息(J)3、正则表达式中“$”匹配前面的子表达式。次
4、或1次(X)4、SQ1是一种小巧易用的轻量型关系数据库系统(X)5、PandaS中的Series数据类型的特点是相比普通的一维数组能存放更多数据(x)6、MatPIot1ib可以用于绘制图表。()7、SeIeniUm是一个专门用于开发Python爬虫的浏览器(x)8、Se1enium中模拟键盘输入的函数是Send_keys()()9、Python自带的单元测试模块是unittest()10、某同学认为自己开发的爬虫对网站的影响很小,可以忽略robots.txt中的内容(X)三、填空题(每题2分)1RobOtS协议旨在让网站访问者(或访问程序)了解该网站的信息抓取限制。2 .HTTP请求中的Po
5、ST方法向指定资源提交数据进行处理请求。3 .正则表达式中表示匹配任意数字的是“094 .Chrome开发者工具中的SoUrCeS面板主要用来调试JaVaSCriDt。5 .网络API使用约定XM1和JSoN格式呈现数据。6 .jg是一个开源的键值对存储数据库。7 .举回)辿11可以操纵浏览器进行一些类似于普通用户的行为。8 .浏览器一般把Cookie数据放在HTTP请求中的Header数据中。9 .PVQUerV可以类似iQuerv的形式解析网页,并支持CSS选择器。10 .验证码的英文名称缩写为CAPTCHA。四、简答题(每题4分)1请使用正则表达式匹配下列字符串(1)只能输入数字。(2)
6、只能输入非零的正整数(3)只能输入长度为3的字符(4)只能输入由26个大写英文字母组成的字符串(5)只能输入由26个英文字母组成的字符串(1) A0-9*$(2) A+?1-90-9*$(3) .3S(4) AA-Z+$(5) AA-Za-z+$(每点1分)2 .请简述HTTP请求中的GET、HEAD、POST、PUT和DE1ETE方法(4分)(1) GET:指定的页面信息,并返回实体主体。(2) HEAD:类似GET请求,只不过返回的响应中没有具体的内容,用于获取报头。(3) POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。PoST请求可能会导致新
7、的资源的建立和/或己有资源的修改。(4) PUT:从客户端向服务器传送的数据取代指定的文档的内容。(5) DE1ETE:请求服务器删除指定的页面。(每点1分)3 .请举例说明5种反爬虫的方式(4分)(1)识别RequestHeaders:通过验证headers中的USer-Agem信息来判定当前访问是否来自常见的界面浏览器。更复杂的headers验证则会要求验证RefererAccept-encoding等信息。(2)验证码:辨别计算机程序和人类用户的不同,广泛用于限制异常访问。(3)限制或封禁IP地址:判定为爬虫后限制甚至封禁来自当前IP地址的访问。(4)更改服务器返回的信息:通过加密信息、
8、返回虚假数据等方式保护服务器返回的信息。(5)账号限制:只有己登录的账号才能够访问网站数据。(每点1分)4 .请简述SCraPy包含的组件及其功能。(至少举出5个组件)(4分)(1)引擎(Engine):用于处理整个系统的数据流处理,触发事务,是框架的核心。(2)调度器(SChedU1er):用于接受引擎发送的请求,将请求放入队列中,并在引擎再次请求的时候返回。它决定下一个要抓取的网址,同时担负着网址去重这一重要工作。(3)下载器(Down1oader):用于下载网页内容,并将网页内容返回给爬虫。它的基础是twisted,一个Python网络引擎框架。(4)爬虫(Spiders):用于从特定的
9、网页中提取自己需要的信息,即Scrapy中所谓的实体(Item):也可以从中提取链接,让SCraPy继续抓取下一个页面。(5)管道(PiPe1ine):负责处理爬虫从网页中抽取的实体,主要的功能是持久化信息、验证实体的有效性、清洗信息等。当页面被爬虫解析后,将被发送到管道,并经过特定的程序来处理数据.(每点1分)5 .请说明SCQPy爬虫的工作过程?(4分)第1步,引擎打开一个网站,找到处理该网站的爬虫,并向该爬虫请求第一个要抓取的UR1o第2步,引擎从爬虫中获取到第一个要抓取的UR1并在调度器中以requests调度。第3步,引擎向调度器请求下一个要抓取的UR1。第4步调度器返回下一个要抓取
10、的UR1给引擎,引擎将UR1通过下载器中间件转发给下载器。一旦页面下载完毕,下载器会生成一个该页面的Responses,并将其通过下载器中间件发送给引擎。引擎从下载器中接收到ReSPOnSeS并通过爬虫中间件发送给爬虫处理。之后爬虫处理Responses并返回抓取的Item及发送(跟进的)新的ReqUeStS给引擎。引擎将抓取的Item传递给管道,将(爬虫返回的)ReqUeStS传递给调度器。重复第2步开始的过程直到调度器中没有更多的Requests,最终引擎关闭网站。五、应用题(20分)1请使用Matp1ot1ib绘制卜五,口区间内的余弦函数图像,要求曲线颜色为红色。解答:frommatp1
11、ot1ibimportpyp1otimportnumpyasnp=np.1inspace(-np.piznp.pi)pyp1ot.p1ot(x,np.cos(x),co1or=,red)pyp1ot.show()2.请使用SCraPy框架编写PythOn程序,爬取豆瓣网首页(https:WWW)上所有a标签的文字内容。解答:# Items.pyc1assTextItem(ScrapyJtem):text=scrapy.Fie1d()# DoubanSpiderpyimportscrapyfromscrapy.se1ectorimportSe1ectorfrom.itemsimportTexti
12、temc1assDoubanspiderSpider(Scrapy.Spider):name=DoubanSpidera11owed_domains=start_ur1s=defparse(se1f,response):item=Text1tem()h1text=response.xpath(atext().extract()print(Textis+.join(h1text)itemtext=hItextreturnitem试题及答案1.PythOn爬虫的作用是什么?(B)A.爬取网页上的图片B.爬取网页上的文本C.爬取网页上的视频D.爬取网页上的音频2 .以下哪个不是Python爬虫常用的
13、库?(D)A. requestsB. Beautifu1SoupC. ScrapyD. Pygame3 .以下哪个不是HnP协议中的请求方法?(D)A. GETB. POSTC. DE1ETED. UPDATE4 .以下哪个正则表达式可以匹配所有以数字开头的字符串?(A)A.、d+$B. d*$C. %d+*D. d(1,)S5 .以下哪个不是BeaUtifUISOUP库中常用的解析器?(D)A. Ixm1B. htm1.parserC. xm1D. json6 .以下哪个XPath表达式可以选取所有C1aSS属性为examp1e的元素?(A)A. *CIaSS=examp1e”B. /*c1
14、ass=zzcxamp1ez,C. /*cIass=*examp1e*D. /*7 .以下哪个不是PythOn网络爬虫的常用爬取策略?(C)A.深度优先策略8 .广度优先策略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. matp1ot1ib库D.以上所有1 .在字符串前添加r可使字符串不经过转义()2 .可以直接通过Bcautifu1Soup或tag对象实现Bcautifu1Soup中find_a11()方法的功能(J)3 .HTTP所有状态码的第一个数字代表了响应的五种状态之一(J)4 .HTTP状态码中,200表示请求已成功,数据随此响应返回(J)5 .在XPath中,希望选取此节点的所有子节点,应该使用“/”(J)6 .在XPath中,希望选取所有名称为“tit1e”的子节点,应该使用“tit1e()7 .在XPath中,希望选取所有名称为ti