Python网络爬虫试卷答案_第1页
Python网络爬虫试卷答案_第2页
Python网络爬虫试卷答案_第3页
Python网络爬虫试卷答案_第4页
Python网络爬虫试卷答案_第5页
全文预览已结束

下载本文档

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

文档简介

答案:选择题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,headers=head)#使用request封装url和头部信息

html=""

#异常处理

try:

response=urllib.request.urlopen(request)

html=response.read().decode("utf-8")

#print(html)

excepturllib.error.URLErrorase:

ifhasattr(e,"code"):

print(e.code)

ifhasattr(e,"reason"):

print(e.reason)

returnhtml

#保存数据

defsaveData(datalist,savepath):

print("save....")

book=xlwt.Workbook(encoding="utf-8",style_compression=0)#创建workbook对象

sheet=book.add_sheet('豆瓣电影Top250',cell_overwrite_ok=True)#创建工作表

col=("电影详情链接","图片链接","影片中文名","影片外国名","评分","评价数","概况",

温馨提示

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

评论

0/150

提交评论