Python网络爬虫试卷及答案_第1页
Python网络爬虫试卷及答案_第2页
Python网络爬虫试卷及答案_第3页
Python网络爬虫试卷及答案_第4页
Python网络爬虫试卷及答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

Python网络爬虫测验题学号专业姓名单项选择题(每题1.5分,共45分)1.以下选项中不是Python数据分析的第三方库的是()A.numpyB.scipyC.pandasD.requests2.以下关于BeautifulSoupfind方法说法正确的是()A.find返回满足条件的第一个元素 B.find返回满足条件的最后一个元素C.find返回满足条件的所有元素 D.find返回满足条件的指定个数的元素3.以下对BeautifulSoup描述正确的是()A.BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库B.BeautifulSoup是一个C++库C.BeautifulSoup是支持C语言调用D.BeautifulSoup是支持Java语言调用4.如果想获取MongoDB“col”集合中“likes”大于100,小于200的数据,可以使用以下哪个命令()A.db.col.find({likes:{$lt:200,$gt:100}})B.db.col.find({likes:{$gte:200,$gt:100}})C.db.col.find({likes:{$gt:200,$lte:100}})D.db.col.find({likes:{$gte:200,$lte:100}})5.time库的time.mktime(t)函数的作用是()将当前程序挂起secs秒,挂起即暂停执行将struct_time对象变量t转换为时间戳返回一个代表时间的精确浮点数,两次或多次调用,其差值用来计时根据format格式定义,解析字符串t,返回struct_time类型时间变量6.time库的time.time()函数的作用是()返回系统当前时间戳对应的易读字符串表示返回系统当前时间戳对应的struct_time对象返回系统当前时间戳对应的本地时间的struct_time对象,本地之间经过时区转换返回系统当前的时间戳7.下列关于scrapy爬虫的表述有误的是()Scrapy可用XPath表达式分析页面结构Scrapy可以用于数据挖掘、监测和自动化测试Scrapy源码中默认callback函数的函数名就是parseScrapy使用了Twisted同步网络库来处理网络通讯8.Scrapy启动后,首先会访问网站的什么文件()spider.txtrobots.txtlaw.txtscrapy.txt9.以下对requests描述不正确的是()Requests具有Keep-Alive&连接池国际化域名和URL带持久Cookie的会话Requests不自动解压10.下列哪个快捷键可以打开网页源代码()Shift+AShift+UCtrl+ACtrl+U11.对Scrapy描述正确的是()一个Scrapy项目只能创建一个爬虫一个Scrapy项目只能使用一管道爬虫与管道之间传递数据不使用item子类爬虫与管道之间传递数据使用item子类12.对Reqtests框架描述错误的是()Reqtests可以发送Get请求Reqtests可以发送Put请求Reqtests可以发送Delete请求Reqtests可以发送Option请求13.对Scrapy命令的作用描述错误的是()startproject命令用于创建项目genspider命令用于创建爬虫view命令用于查看网页view命令用于下载网页14.RequestsGet请求描述正确的是()使用Get请求可以发送大量数据使用Get请求可以发送图片使用Get请求可以发送Excel文件使用Get请求可以下载静态网页15.对Http请求方式描述正确的是()POST请求可以传递大于2M的数据GET请求可以传递大于2M的数据}POST请求可以传递没有限制GET请求可以传递没有限制16.下列代码执行结果是什么?()x=1defchange(a):

x+=1print(x)change(x)123D. 417.关于函数的可变参数,可变参数*args传入函数时存储的类型是()dicttuplelistSet18.下列快捷键中能够中断(InterruptExecution)Python程序运行的是()A.F6B.Ctrl+CC.Ctrl+F6D.Ctrl+Q19.Python拥有大量的开源爬虫框架库,可以帮助数据科学研究人员快速方便的收集数据。在数据采集编程设计中,对常见的组合框架使用描述错误的是()urllib、BeautifulSoup4、MongoDBRequests、BeautifulSoup4、MongoDBScrapy、XPath、MongoDBRequests、XPath、txt20.以下关于对象(a,b均为对象)的说法正确的是()a=b表示a对b进行复制,会对a分配单独的内存空间a=b表示a对b进行引用,会对a分配单独的内存空间a=b表示a对b进行引用,a,b指向共同的内存地址空间a=b表示a对b进行复制,a,b使用共同的内存空间21.以下销毁对象abc的正确方法是()A.将abc赋值为nullB.使用__del__方法C.使用__destroy__方法D.使用__finalize__方法22.以下不属于OS系统库模块的是A.randomB.ioC.errorD.os23.以下关于http协议响应行中状态码说法正确的是()A.200表示正常B.403表示请求资源未找到C.404表示请求资源无权访问D.500请求方法不正确24.服务器经常有反爬虫机制,往往会判断用户是否通过浏览器进行访问,所以在进行数据爬取时,一般我们会在http头信息中加入()A、host信息B、User-AgentC、Accept

D、Content-Type

25.以下关于Scrapy说法错误的是()A.Scrapy是一个为了爬取网站而编写的框架B.Scrapy使用了Twisted异步网络框架C.可以多线程爬取数据D.Scrapy以阻塞方式运行26.BeautifulSoup对查找子元素描述正确的是()A.使用函数可以跨级查找子元素B.如果子元素包含字符串,也可以被查找到C.是点号可以跨级查找子元素D.不能查找文档中的备注内容27.以下关于python中类的成员变量说法正确的是()A.python中类的变量只能是公有变量B.python中类的变量只能是私有变量C.python中类的变量只能以“__”(两个下划线)开头D.python中类的所有变量是可以有办法在外部进行引用的28.在类中,关于self说法正确的是()A.self表示类对象中的默认变量值B.self表示类对象中的唯一函数C.self表示类对象自身D.self表示对类对象的引用出来的新对象29.以下说法错误的是()A.类是的对象实例;B.类变量通常不作为实例变量使用C.方法定义了对一个对象可以执行的操作D.继承允许把一个派生类的对象作为一个基类对象对待30.Python语言提供的3个基本数字类型是()A.整数类型、浮点数类型、复数类型B.整数类型、二进制类型、浮点数类型C.整数类型、二进制类型、复数类型D.复数类型、二进制类型、浮点数类型填空题(每题2分,共20分)Xpath从根节点开始查找使用“___”语法Xpath使用查找属性的语法:__________列举至少三种Http请求方式:___________Requests通过_____应对反爬虫python中安装geoip模块,使用的命令是__________Python语言语句块的标记是(中文名称)_________安装好python之后,默认安装requests模块________导入BeautifulSoup时要先安装_____________库将object通过loads转化JSON数据转换为Python对象的_____Windows查看IP地址的命令_____________问答题(每题10分,共20分)简述Redis以及其优点简述三种反爬虫策略以及其反爬策略内容四、编程题(15分)1、爬取豆瓣评分排名前250的电影数据,结果如图:链接:/top250答案:选择题1-5:DAAAB6-10:DDBDD11-15:DDDDA16-20:DBBDC21-25:BAABD26-30:ADCAA填空题//2、@[属性名=]3、GET、POST、DELETE、PUT、HEAD、TRACE、OPTIONS、CONNECT(三种即可)4、设置请求头pipinstallgeoip6、缩进7、否8、bs49、dict10、ipconfig问答题1题答案: client=pymongo.MongoCRedis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sortedsets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。Redis内置了复制(replication),LUA脚本(Luascripting),LRU驱动事件(LRUeviction),事务(transactions)和不同级别的磁盘持久化(persistence),并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(highavailability)2题答案:反爬虫策略之Headers:Headers是指网络请求的头部信息,也就是网络请求过程中所携带的描述信息,允许您对HTTP请求和响应头执行各种操作。基于Headers的反爬虫策略常见的为:根据User-Agent识别浏览器行为;根据Cookie识别用户信息;根据Referer识别链路、根据Content-Type识别数据类型。 反爬虫策略之Cookie:Cookie是请求头的一部分,同时也web浏览器的凭证,根据实际情况,有时候要指定Cookie参数。requests将Cookie从中剥离出来,可以使用cookies参数直接指定。在爬取有些网页是要求登录之后的才能爬取,所以要和服务器一直保持登录状态,有时的策略不都指定cookies,而是会使用session来完成,Session提供的API和requests是一样的,并且可将Cookie自动保存。反爬虫策略之Proxies:服务器会针对用户操作对用户行为进行记录,当根据规则匹配识别为程序操作,可能会进行IP封禁的操作。当我们发现IP已经被封了,此IP就再也访问不到目标网站了。为了面对封禁IP的操作,我们可以:做更完善的设置,避免浏览器识别并封禁IP;使用代理IP,隐藏真实IP;设置好访问间隔,避免服务器压力过大四:编程题frombs4importBeautifulSoup#网页解析,获取数据

importre#正则表达式,进行文字匹配

importurllib.request,urllib.error#制定URL,获取网页数据

importxlwt#进行excel操作

defmain():

baseurl="/top250?start="

#爬取网页

datalist=getData(baseurl)

#savepath="豆瓣电影Top250.xls"

dbpath="movie.db"

#保存数据

savepath='G:/war/douban/豆瓣电影Top250-4.xls'

saveData(datalist,savepath)

#saveData2DB(datalist,dbpath)

#askURL("/top250?start=")

#影片详情链接的规则

findLink=pile(r'<ahref="(.*?)">')#创建正则表达式对象,表示规则(字符串的模式)r:忽视所有的特殊符号

#影片图片

findImgSrc=pile(r'<img.*src="(.*?)"',re.S)#re.S让换行符包含在字符中

#影片片名

findTitle=pile(r'<spanclass="title">(.*)</span>')

#影片评分

findRating=pile(r'<spanclass="rating_num"property="v:average">(.*)</span>')

#找到评价人数

findJudge=pile(r'<span>(\d*)人评价</span>')

#找到概况

findInq=pile(r'<spanclass="inq">(.*)</span>')

#找到影片的相关内容

findBd=pile(r'<pclass="">(.*?)</p>',re.S)

#一个功能对应一个函数

#爬取网页

defgetData(baseurl):

datalist=[]

foriinrange(0,10):#调用获取页面信息的函数,10次

url=baseurl+str(i*25)

html=askURL(url)#保存获取到的网页源码

#2.逐一解析数据

soup=BeautifulSoup(html,"html.parser")

foriteminsoup.find_all('div',class_="item"):#查找符合要求的字符串,形成列表

#print(item)#测试:查看电影item全部信息

data=[]#保存一部电影的所有信息

item=str(item)

#影片详情的链接

link=re.findall(findLink,item)[0]#re库用来通过正则表达式查找指定的字符串

data.append(link)#添加链接

imgSrc=re.findall(findImgSrc,item)[0]

data.append(imgSrc)#添加图片

titles=re.findall(findTitle,item)#片名可能只有一个中文名,没有外国名

if(len(titles)==2):

ctitle=titles[0]#添加中文名

data.append(ctitle)

otitle=titles[1].replace("/","")#去掉无关的符号

data.append(otitle)#添加外国名

else:

data.append(titles[0])

data.append('')#外国名字留空

rating=re.findall(findRating,item)[0]

data.append(rating)#添加评分

judgeNum=re.findall(findJudge,item)[0]

data.append(judgeNum)#提加评价人数

inq=re.findall(findInq,item)

iflen(inq)!=0:

inq=inq[0].replace("。","")#去掉句号

data.append(inq)#添加概述

else:

data.append("")#留空

bd=re.findall(findBd,item)[0]

bd=re.sub('<br(\s+)?/>(\s+)?',"",bd)#去掉<br/>

bd=re.sub('/',"",bd)#替换/

data.append(bd.strip())#去掉前后的空格

datalist.append(data)#把处理好的一部电影信息放入datalist

returndatalist

#得到指定一个URL的网页内容

defaskURL(url):

head={#模拟浏览器头部信息,向豆瓣服务器发送消息

"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.122Safari/537.36"

}

#用户代理,表示告诉豆瓣服务器,我们是什么类型的机器、浏览器(本质上是告诉浏览器,我们可以接收什么水平的文件内容)

request=urllib.request.Request(url,h

温馨提示

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

评论

0/150

提交评论