大数据采集与预处理技术(微课版)课件全套 项目1-9 表情图像数据采集和预处理-语音直播数据标注_第1页
大数据采集与预处理技术(微课版)课件全套 项目1-9 表情图像数据采集和预处理-语音直播数据标注_第2页
大数据采集与预处理技术(微课版)课件全套 项目1-9 表情图像数据采集和预处理-语音直播数据标注_第3页
大数据采集与预处理技术(微课版)课件全套 项目1-9 表情图像数据采集和预处理-语音直播数据标注_第4页
大数据采集与预处理技术(微课版)课件全套 项目1-9 表情图像数据采集和预处理-语音直播数据标注_第5页
已阅读5页,还剩450页未读 继续免费阅读

下载本文档

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

文档简介

大数据采集与预处理技术**项目一表情图像数据采集和预处理序号软件配置要求1python3运行计算机内存8G以上2torchvision最新版本3requests、lxml最新版本一、项目目标:1、完成表情图像数据采集环境安装配置,掌握爬虫必备知识;2、完成表情图像数据爬虫采集程序设计和数据采集;3、完成表情图像数据预处理。二、环境要求:任务一表情图像数据采集环境准备一、任务目标1、完成python、pytorch、requests、Lxml、BeautifulSoup等依赖库安装;2、完成各依赖库的典型用例,保证测试环境正常;3、熟练掌握HTML文件结构,能够分析各组件元素的含义。二、采集方法网络爬虫公开数据集摄像机传感器API接口或者已有图像生成三、爬虫采集步骤四、开发环境搭建1、python3、opencv、numpy、pycharm等介绍在其它课程有介绍,不再赘述。2、torchvision是PyTorch项目官方维护的一个核心库,专为计算机视觉任务设计。它的核心目标是简化计算机视觉模型的开发、训练和评估流程,提供一系列高效且易于使用的工具。安装方法,在集成环境中搜索torchvision选择默认版本安装即可,在命令行使用如下命令:pipinstalltorchvision选择目标网站确定爬虫工具编写爬虫脚本处理反爬机制图像存储管理四、开发环境搭建2、torchvision主要组件和功能包括:预训练模型(Models):提供大量经典的、高性能的、开箱即用的预训练模型架构,如AlexNet、ResNet、FasterR-CNN等。常用数据集(Datasets):内置加载许多广泛使用的计算机视觉数据集的接口,如MNIST、ImageNet、COCO(目标检测、实例分割、关键点检测)、VOC(目标检测、语义分割)等。图像变换(Transforms):提供丰富的图像预处理和数据增强函数(torchvision.transforms模块)。包括常见的操作(如调整大小Resize、裁剪Crop、旋转Rotate、翻转Flip、归一化Normalize、色彩抖动ColorJitter)以及将多个变换组合成流水线的功能。四、开发环境搭建3、RequestsRequests是一个为人类设计的简单而优雅的HTTP库。requests库是一个原生的HTTP库,比urllib3库更为容易使用。requests库发送原生的HTTP1.1请求,无需手动为URL添加查询串,也不需要对POST数据进行表单编码。相对于urllib3库,requests库拥有完全自动化Keep-alive和HTTP连接池的功能。

安装方法,在集成环境中搜索requests选择默认版本安装即可,在命令行使用如下命令:pipinstallrequests4、LxmlLxml库是python的第三方库,特点是简单和易上手,并且解析大型文档(如xml或html文档)比较快,因此写爬虫解析网页的时候可以选择。在集成环境中搜索lxml选择默认版本安装,命令行安装:pipinstalllxml四、开发环境搭建5、BeautifulSoupPython第三方库,需要安装使用。BeautifulSoup将HTML内容转换成结构化内容,只要从结构化标签里面提取数据,比如,要获取百度首页的标题“百度一下,我就知道”,这个标题是被两个标签套住的,一个是一级标签<head><head>,另一个是二级标签<title><title>,所以只要从标签中取出信息就可以了。安装方法,在集成环境中搜索bs4选择默认版本安装即可,在命令行使用如下命令:pipinstallbs4五、依赖库使用示例1、python爬虫依赖库requests示例:发送一个get请求并查看返回结果importrequestsurl='/tipdm/index.html'#生成get请求rqg=requests.get(url)#查看结果类型print('查看结果类型:',type(rqg))#查看状态码print('状态码:',rqg.status_code)#查看编码print('编码:',rqg.encoding)#查看响应头print('响应头:',rqg.headers)#打印查看网页内容print('查看网页内容:',rqg.text)查看结果类型:<class’requests.models.Response’>状态码:200编码:ISO-8859-1响应头:{’Date’:’Mon,18Nov201904:45:49GMT’,’Server’:’Apache-Coyote/1.1’,’Accept-Ranges’:’bytes’,’ETag’:’W/"15693-1562553126764"’,’Last-Modified’:’Mon,08Jul201902:32:06GMT’,’Content-Type’:’text/html’,’Content-Length’:’15693’,’Keep-Alive’:’timeout=5,max=100’,’Connection’:’Keep-Alive’}五、依赖库使用示例2、python爬虫依赖库lxml对于爬虫请求的html网页,实际是xml文件,因此需要使用对于的解析工具找到目标资源,然后发起请求抓取资源。使用lxml库的第一个步骤永远是初始化,只有初始化之后我们才可以去使用它的语法。初始化方法如下:html=etree.HTML(text)1>参数:text:html内容的字符串2>返回值:html:一个lxml库的对象请同学打印html对象,分析其包含的内容和结构谢谢!大数据采集与预处理技术**项目一表情图像数据采集和预处理序号软件配置要求1python3运行计算机内存8G以上2pytorch最新版本3pycharm最新版本一、项目目标:1、完成表情图像数据采集环境安装配置,掌握爬虫必备知识;2、完成表情图像数据爬虫采集程序设计和数据采集;3、完成表情图像数据预处理。二、环境要求:任务一表情图像数据采集一、任务目标1、完成python3、pytorch、requests、Lxml、BeautifulSoup等依赖库安装;2、熟悉requests库的安装和使用;3、熟练掌握HTML文件结构,能够分析各组件元素的含义。二、知识储备Requests是一个为人类设计的简单而优雅的HTTP库。requests库是一个原生的HTTP库,比urllib3库更为容易使用。requests库发送原生的HTTP1.1请求,无需手动为URL添加查询串,也不需要对POST数据进行表单编码。相对于urllib3库,requests库拥有完全自动化Keep-alive和HTTP连接池的功能。三、依赖库使用示例1、python爬虫依赖库requests示例:发送一个get请求并查看返回结果importrequestsurl='/tipdm/index.html'#生成get请求rqg=requests.get(url)#查看结果类型print('查看结果类型:',type(rqg))#查看状态码print('状态码:',rqg.status_code)#查看编码print('编码:',rqg.encoding)#查看响应头print('响应头:',rqg.headers)#打印查看网页内容print('查看网页内容:',rqg.text)查看结果类型:<class’requests.models.Response’>状态码:200编码:ISO-8859-1响应头:{’Date’:’Mon,18Nov201904:45:49GMT’,’Server’:’Apache-Coyote/1.1’,’Accept-Ranges’:’bytes’,’ETag’:’W/"15693-1562553126764"’,’Last-Modified’:’Mon,08Jul201902:32:06GMT’,’Content-Type’:’text/html’,’Content-Length’:’15693’,’Keep-Alive’:’timeout=5,max=100’,’Connection’:’Keep-Alive’}请问这些数据是什么意思?http协议1、简介HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。2、HTTP协议的主要特点

支持C/S(客户/服务器)模式。

简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST,这规定了客户与服务器联系的类型。HTTP协议简单,使得HTTP服务器的程序规模小,通信速度很快。

灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

无状态:HTTP协议是无状态协议,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。3、HTTPURLHTTPURL的格式如下:http://host[":"port][abs_path]http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用默认端口80;abs_path指定请求资源的URI(Web上任意的可用资源)。4、报文HTTP有两种报文分别是请求报文和响应报文。请求报文和响应报文都是由以下4部分组成: 1、请求行 2、请求头 3、空行 4、消息主体5、请求报文请求行由请求方法、URL字段和HTTP协议的版本组成,格式如下:MethodRequest-URIHTTP-VersionCRLF5、请求报文请求行由请求方法、URL字段和HTTP协议的版本组成,格式如下:MethodRequest-URIHTTP-VersionCRLF其中Method表示请求方法;HTTP请求方法有8种,分别是GET、POST、DELETE、PUT、HEAD、TRACE、CONNECT、OPTIONS。其中PUT、DELETE、POST、GET分别对应着增删改查,最常用POST和GET。 GET:请求获取Request-URI所标识的资源 POST:在Request-URI所标识的资源后附加新的数据 HEAD:请求获取由Request-URI所标识的资源的响应消息报头 PUT:请求服务器存储一个资源,并用Request-URI作为其标识 DELETE:请求服务器删除Request-URI所标识的资源 TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断 CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。5、请求报文请求行示例

例如访问某CSDN博客地址请求行是:GET/itachi85HTTP/1.1请求报头

在请求行之后会有0个或者多个请求报头,每个请求报头都包含一个名字和一个值,它们之间用“:”分割。请求头部会以一个空行,发送回车符和换行符,通知服务器以下不会有请求头。关于请求报头,会在后面的消息报头一节做统一的解释。请求数据请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合,与请求数据相关的最常用的请求头是Content-Type和Content-Length。6、响应报文

HTTP的响应报文由状态行、消息报头、空行、响应正文组成。响应报头后面会讲到,响应正文是服务器返回的资源的内容。6、响应报文

HTTP的响应报文由状态行、消息报头、空行、响应正文组成。响应报头后面会讲到,响应正文是服务器返回的资源的内容。状态行1、状态行格式如下:HTTP-VersionStatus-CodeReason-PhraseCRLF其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:100~199:指示信息,表示请求已接收,继续处理200~299:请求成功,表示请求已被成功接收、理解、接受300~399:重定向,要完成请求必须进行更进一步的操作400~499:客户端错误,请求有语法错误或请求无法实现500~599:服务器端错误,服务器未能实现合法的请求6、响应报文状态行2、常见的状态码如下: 200OK:客户端请求成功 400BadRequest:客户端请求有语法错误,不能被服务器所理解 401Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403Forbidden:服务器收到请求,但是拒绝提供服务 500InternalServerError:服务器发生不可预期的错误 503ServerUnavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常7、HTTP的消息报头消息报头分为通用报头、请求报头、响应报头、实体报头等。消息头由键值对组成,每行一对,关键字和值用英文冒号“:”分隔。通用报头既可以出现在请求报头,也可以出现在响应报头中。 Date:表示消息产生的日期和时间 Connection:允许发送指定连接的选项,例如指定连接是连续的,或者指定“close”选项,通知服务器,在响应完成后,关闭连接 Cache-Control:用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制)7、HTTP的消息报头请求报头

请求报头通知服务器关于客户端求求的信息,典型的请求头有:

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机 User-Agent:发送请求的浏览器类型、操作系统等信息 Accept:客户端可识别的内容类型列表,用于指定客户端接收那些类型的信息 Accept-Encoding:客户端可识别的数据编码 Accept-Language:表示浏览器所支持的语言类型 Connection:允许客户端和服务器指定与请求/响应连接有关的选项,例如这是为Keep-Alive则表示保持连接。 Transfer-Encoding:告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式。7、HTTP的消息报头响应报头,用于服务器传递自身信息的响应,常见的响应报头: Location:用于重定向接受者到一个新的位置,常用在更换域名的时候 Server:包含可服务器用来处理请求的系统信息,与User-Agent请求报头是相对应的实体报头,实体报头用来定于被传送资源的信息,既可以用于请求也可用于响应。请求和响应消息都可以传送一个实体,常见的实体报头为: Content-Type:发送给接收者的实体正文的媒体类型 Content-Lenght:实体正文的长度 Content-Language:描述资源所用的自然语言,没有设置则该选项则认为实体内容将提供给所有的语言阅读 Content-Encoding:实体报头被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。 Last-Modified:实体报头用于指示资源的最后修改日期和时间 Expires:实体报头给出响应过期的日期和时间5、请求报文请求报文示例5、请求报文请求报文示例5、请求报文响应报文示例三、依赖库使用示例1、python爬虫依赖库requests示例1:利用requests构建一个GET请求 importrequests r=requests.get(‘http://’) print(r.text)返回结果{"args":{},"headers":{"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","Accept-Encoding":"gzip,deflate","Accept-Language":"zh-CN,zh;q=0.9","Host":"","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/Safari/537.36","X-Amzn-Trace-Id":"Root=1-63ee197c-3fb12fa7568c53c972d09131"},"origin":"59","url":"/get"}从返回结果,我们是否成功发起了GET请求?从返回结果能看到哪些关键信息?1、python爬虫依赖库requests示例2:首先尝试请求知乎的首页信息 importrequests response=requests.get('/') print(f"当前请求的响应状态码为:{response.status_code}") print(response.text)返回结果:

当前请求的响应状态码为:403<html><head><title>400BadRequest</title></head><bodybgcolor="white"><center><h1>400BadRequest</h1></center><hr><center>openresty</center></body></html>为什么失败了呢?因为知乎发现这是是一个爬虫,因此需要对浏览器进行伪装,添加对应的User-Agent信息。1、python爬虫依赖库requests将示例2改为如下代码,测试返回结果importrequestsheaders={"user-agent":'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.198Safari/537.36'}response=requests.get('',headers=headers)print(f"当前请求的响应状态码为:{response.status_code}")print(response.text)1、python爬虫依赖库requests

在使用百度搜索的时候经常发现url地址中会有一个‘?’,该问号后边的就是请求参数,又叫做查询字符串。通常情况下不会只访问基础网页,特别是爬取动态网页时需要传递不同的参数获取不同的内容;GET传递参数有两种方法,可以直接在链接中添加参数或者利用params添加参数。

示例3:在url携带参数—直接对含有参数的url发起请求 importrequests headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.99Safari/537.36"} url='/s?wd=python' response=requests.get(url,headers=headers)

试运行一下结果,如果携带多个参数怎么写?1、python爬虫依赖库requests示例4:通过params携带参数字典构建请求参数字典;向接口发送请求的时候带上参数字典,参数字典设置给params。 importrequests headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.99Safari/537.36"} url='/s?'#最后有没有问号结果都一样 #请求参数是一个字典,即wd=python kw={'wd':'python'} #带上请求参数发起请求,获取响应 response=requests.get(url,headers=headers,params=kw) print(response.content)通过运行结果可以判断,对于字典kw={'key1':'values1','key2':'values2'}请求的链接自动被构造成了:/get?key2=value2&key1=value11、python爬虫依赖库requests网页的返回类型实际上是JSON格式的str类型。如果想直接解析返回结果,得到字典格式,可以调用json()方法。importrequestsr=requests.get("/get")print(type(r.text))print(r.json())print(type(r.json()))结果:<class'str'>{'args':{},'headers':{'Accept':'*/*','Accept-Encoding':'gzip,deflate','Host':'','User-Agent':'python-requests/2.24.0','X-Amzn-Trace-Id':'Root=1-5fb5b3f9-13f7c2192936ec541bf97841'},'origin':'34','url':'/get'}<class'dict'>发现调用json()方法,可以将返回结果是JSON格式的字符串转化为字典。如果返回结果不是JSON格式,便会出现解析错误,抛出json.decoder.JSONDecodeError异常。1、python爬虫依赖库requests接收字典字符串会被自动编码发送到url,如下:importrequestsheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.193Safari/537.36'}wd='张三同学'pn=1response=requests.get('/s',params={'wd':wd,'pn':pn},headers=headers)print(response.url)可以观察结果是否被自动编码。1、python爬虫依赖库requests示例5:使用GET请求抓取网页上面的请求链接返回的是JSON形式的字符串,如果请求普通的网页,则能获得相应的内容。importrequestsimportreheaders={"user-agent":'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.198Safari/537.36'}response=requests.get('/explore',headers=headers)result=re.findall("(ExploreSpecialCard-contentTitle|ExploreRoundtableCardquestionTitle).*?>(.*?)</a>",response.text)print([i[1]foriinresult])结果:['我的世界杯记忆','如何看待刘强东发京东全员信,提出副总监级别以上降薪10%-20%,以提高基层员工福利待遇等?','物联网在如何改变无锡?','2022世界物联网博览会将为无锡带来哪些新的机遇?','物联网在如何改变无锡?','做女性公益有意义吗?有哪些行之有效的办法?你身边有哪些女性公益?','做女性公益有意义吗?有哪些行之有效的办法?你身边有哪些女性公益?','普通人是如何坚持长期做公益的?','为什么说肥胖更接近2型糖尿病的真相','人为什么会得糖尿病?什么样的人容易得糖尿病?','糖尿病人只管血糖不管体重行不行?']1、python爬虫依赖库requests在上面的例子中,抓取的是知乎的一个页面,实际上它返回的是一个HTML文档。如果想抓去图片、音频、视频等文件,怎么处理?

思路:图片、音频、视频本质上都是由二进制码组成的,由于有特定的保存格式和对应的解析方式,才可以看到这些形形色色的多媒体。所以,想要抓取它们,就要拿到它们的二进制码。下面以GitHub的站点图标为例来看一下:importrequestsresponse=requests.get("/favicon.ico")withopen('github.ico','wb')asf:f.write(response.content)Response对象的两个属性,一个是text,另一个是content.其中前者表示字符串类型文本,后者表示bytes类型数据,同样地,音频和视频文件也可以用这种方法获取。1、python爬虫依赖库requests示例6:使用post请求抓取网页(使用POST请求抓取网页,主要是找到待解析的网页)importrequestskw=input("请输入要翻译的词语:")#准备翻译的数据ps={"kw":kw}#准备伪造请求headers={#User-Agent:首字母大写,表示请求的身份信息;一般直接使用浏览器的身份信息,伪造爬虫请求,让浏览器认为这个请求是由浏览器发起的[隐藏爬虫的信息]"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/85.0.4183.83Safari/537.36Edg/85.0.564.41"}#发送POST请求,附带要翻译的表单数据--以字典的方式进行传递response=requests.post("/sug",data=ps)#打印返回的数据#print(response.content)print(response.content.decode("unicode_escape"))尝试打印response.text,区分和content的区别!1、python爬虫依赖库requests示例7:查看响应内容发送请求后,得到的自然就是响应。在上面实例中,使用text和content获取了响应的内容。此外,还有很多属性和方法可以用来获取其他信息,比如状态码、响应头、Cookies等。importrequestsurl=''req=requests.get(url)print(req.status_code)#响应状态码print(req.text)#响应的文本内容print(req.content)#响应的二进制内容print(req.cookies)#响应的cookiesprint(req.encoding)#响应的编码print(req.headers)#响应的头部信息print(req.url)#响应的网址print(req.history)#响应的历史谢谢!大数据采集与预处理技术*

*项目一表情图像数据采集和预处理序号软件配置要求1python3运行计算机内存8G以上2pytorch最新版本3pycharm最新版本一、项目目标:1、完成表情图像数据采集环境安装配置,掌握爬虫必备知识;2、完成表情图像数据爬虫采集程序设计和数据采集;3、完成表情图像数据预处理。二、环境要求:任务一表情图像数据采集一、任务目标1、完成python3、pytorch、requests、Lxml、BeautifulSoup等依赖库安装;2、熟悉Lxml依赖库的使用和Xpath语法;3、熟练掌握HTML文件结构,能够分析各组件元素的含义。二、python爬虫依赖库lxml对于爬虫请求的html网页,实际是xml文件,因此需要使用对于的解析工具找到目标资源,然后发起请求抓取资源。使用lxml库的第一个步骤永远是初始化,只有初始化之后我们才可以去使用它的语法。初始化方法如下:html=etree.HTML(text)1>参数:text:html内容的字符串2>返回值:html:一个lxml库的对象1、示例:lxml初始化htmlfromlxmlimportetree #使用的lxml库中的etree库html_content=""" #示例HTML文档<html><body><divid="content"><pclass="text">HelloWorld</p><pclass="text">Thisisatest</p><ahref="">Link</a></div></body></html>"""tree=etree.HTML(html_content) #解析HTML,#这里需要传入一个html形式的字符串result=tree.xpath('//p[@class="text"]/text()') #使用XPath提取数据print(result) #输出:['HelloWorld','Thisisatest']#开始初始化2、python爬虫依赖库lxml—xpath(lxml)语法lxml库的语法就是基于xpath语法来的,所以会了xpath语法,自然就会了lxml语法。寻找节点语法:语法含义nodename(节点名字)直接根据写的节点名字查找节点,如:div,p//在当前节点下的子孙节点中寻找,如:('//p')#选择所有<p>标签/在当前节点下的子节点中寻找,如:/div.代表当前节点(可省略不写,就像我们有时候写的相对路径),如:./div..当前节点的父节点,如:../div2、python爬虫依赖库lxml—xpath(lxml)语法示例:查找结点fromlxmlimportetreetext='''<body>

<div>这是测试的div</div>

<div>

<div>

这是嵌套的div标签

<p>

这是嵌套的p标签

</p>

</div>

</div><p>这是测试的p</p></body>'''html=etree.HTML(text)result=html.xpath('//div')#使用xpath语法,一是在子孙节点中寻找,二是寻找div的标签print(result)#结果:#[<Elementdivat0x1e4cadbf608>,<Elementdivat0x1e4cae512c8>,<Elementdivat0x1e4cae51348>]

首先,初始化一个html对象,然后调用在此基础上调用xpath语法,其中传入的参数为://div,意思是寻找其中的div标签。然后观察text字符串中的html代码,可以看见,里面总共只有三个div标签,符合结果。(div标签是成对出现,一组为:<div></div>)同学们可以使用print(etree.tostring(result[0],encoding='utf-8').decode('utf-8'))打印编码结果,使用循环打印试试!2、python爬虫依赖库lxml—xpath(lxml)语法(属性筛选)有时候需要的信息只在某一种标签中的某一个标签中,如一个网页中有很多的div标签,但是只有拥有class=“hello”的属性的标签才具有需要的信息。因此,掌握一些筛选的方法是必须的事情。属性筛选语法:方法名\符号作用@获取属性,如:tree.xpath('//a/@href')#选择所有<a>标签的href属性筛选属性,如:tree.xpath('//p[@class="text"]')#选择class为"text"的<p>标签[]通过索引选择节点,如:tree.xpath(‘//p[1]’)#选择第一个<p>标签,tree.xpath('//p[last()]')#选择最后一个<p>标签contains()判断属性中是否含有某个值(用于多值判断,如:tree.xpath('//p[contains(@class,"text")]')#选择class包含"text"的<p>标签starts-with()以特定字符串开头,如:tree.xpath('//p[starts-with(@class,"tex")]')#选择class以"tex"开头的<p>标签text()提取节点的文本内容,如:tree.xpath('//p/text()')#提取所有<p>标签的文本2、python爬虫依赖库lxml—xpath语法示例:筛选节点text='''<divclass="hello"><p>Hello,thisisusedtotested</p></div><divclass="hellotesthi"><div><div>你好,这是用于测试的html代码</div></div></div><divclass="button"><divclass="menu"><inputname="btn"type="button"value="按钮"/><div></div>''‘#初始化html=etree.HTML(text)#根据单一属性筛选#筛选出class="hello"的div标签hello_tag=html.xpath('//div[@class="hello"]')#注意筛选的方法都是在中括号里面的print(hello_tag)#结果为:[<Elementdivat0x2ba41e6d088>],即找到了一个标签,符合条件#找出具有name="btn"的input标签input_tag=html.xpath('//input[@name="btn"]')print(input_tag)#结果为:[<Elementinputat0x1751d29df08>],找到一个input标签,符合条件#筛选出具有class="hello"的div标签hello_tags=html.xpath('//div[contains(@class,"hello")]')print(hello_tags)#结果为:[<Elementdivat0x1348272d248>,<Elementdivat0x1348272d6c8>],即找到了两个div标签,符合条件2、python爬虫依赖库lxml—xpath(lxml)语法(按序筛选)有时候会有这样的需求,爬取的内容是一个table标签(表格标签),或者一个ul(标签),了解过html的应该都知道这样的标签,内部还有很多标签,比如table标签里就有tr、td等,ul里面就有li标签等。对于这样的标签,需要选择第一个或者最后一个或者前几个等。方法作用last()获取最后一个标签1获取第一个标签position()<=>num筛选多个标签(具体见实例)and,or逻辑运算符,and同时满足

,or任意满足,如:tree.xpath('//p[@class="text"and@id="para1"]'),tree.xpath('//p[@class="text"or@id="para1"]')*匹配任意节点,如:tree.xpath('//div/*')#选择<div>下的所有子节点2、python爬虫依赖库lxml—xpath语法示例:筛选节点fromlxmlimportetreetext='''<ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>'''#初始化html=etree.HTML(text)#获取第一个li标签first_tag=html.xpath('//li[1]') #lxml并没有first()方法print(first_tag)

#获取最后一个li标签last_tag=html.xpath('//li[last()]')print(last_tag)

#获取前五个标签li_tags=html.xpath('//li[position()<6]')print(li_tags)2、python爬虫依赖库lxml—xpath语法注意事项:1)如果XPath表达式没有匹配到任何节点,返回空列表[]。2)确保HTML文档格式正确,否则解析可能失败。3)对于复杂的HTML文档,可以结合浏览器开发者工具(如Chrome的Inspect)来调试XPath表达式。既然学习了以上知识,请同学们试试把学校官方网站的一些信息爬取下来?谢谢!大数据采集与预处理技术*

*项目一表情图像数据采集和预处理序号软件配置要求1python3运行计算机内存8G以上2pytorch最新版本3pycharm最新版本一、项目目标:1、完成表情图像数据采集环境安装配置,掌握爬虫必备知识;2、完成表情图像数据爬虫采集程序设计和数据采集;3、完成表情图像数据预处理。二、环境要求:任务一表情图像数据采集环境准备一、任务目标1、完成python3、pytorch、requests、Lxml、BeautifulSoup等依赖库安装;2、完成各依赖库的典型用例,保证测试环境正常;3、熟练掌握HTML文件结构,能够分析各组件元素的含义。二、HTML网页结构

网络爬虫是网络数据采集的主要手段,是通过编程向网络服务器请求数据(HTML表单),然后解析HTML,提取出自己想要的数据。归纳为四大步:1)根据url获取HTML数据2)解析HTML,获取目标信息3)存储数据4)重复第一步HTML标记包含标签、基于字符的数据类型、字符引用和实体引用等几个关键部分。HTML标签是最常见的,通常成对出现,比如<h1>与</h1>。这些成对出现的标签中,第一个标签是开始标签,第二个标签是结束标签。两个标签之间为元素的内容(文本、图像等),有些标签没有内容,为空元素,如<img>1、示例:经典的HelloWorld程序<!DOCTYPEhtml><html><head><title>Thisisatitle</title></head>

<body><p>Helloworld!</p></body></html>html标签是整个html⽂件的根标签(最顶层标签)head标签中写⻚⾯的属性body标签中写的是⻚⾯上显示的内容title标签中写的是⻚⾯的标题标签层次结构●⽗⼦关系●兄弟关系head和body是html的⼦标签(html就是head和body的⽗标签)title是head的⼦标签,head是title的⽗标签head和body之间是兄弟关系2、

注释标签<!--注释-->ctrl+/快捷键可以快速进⾏注释/取消注释.3、标题标签有六个,从h1-h6,数字越⼤,则字体越⼩<h1>hello</h1><h2>hello</h2><h3>hello</h3><h4>hello</h4><h5>hello</h5><h6>hello</h6>4、段落标签<p>这是⼀个段落</p>

p标签描述的段落,前⾯还没有缩进5、换⾏标签:br br是break的缩写,表示换⾏。br是⼀个单标签(不需要结束标签)。<br/>是规范写法.不建议写成<br>。6、格式化标签加粗:strong标签和b标签倾斜:em标签和i标签删除线:del标签和s标签下划线:ins标签和u标签

<strong>strong加粗</strong><b>b加粗</b><em>倾斜</em><i>倾斜</i><del>删除线</del><s>删除线</s><ins>下划线</ins><u>下划线</u>7、图⽚标签img标签必须带有src属性,表示图⽚的路径。当这个rose.jpg和html文件在一个目录下,可以直接表示为<imgsrc=“rose.jpg”>。img标签的其他属性:alt:替换⽂本.当⽂本不能正确显示的时候,会显示⼀个替换的⽂字title:提示⽂本.⿏标放到图⽚上,就会有提示width/height:控制宽度⾼度.⾼度和宽度⼀般改⼀个就⾏,另外⼀个会等⽐例缩放.否则就会图⽚失衡

border:边框,参数是宽度的像素.但是⼀般使⽤CSS来设定1)使⽤相对路径:创建⼀个image⽬录和html同级,并放⼊⼀个rose2.jpg,如<imgsrc="image/rose2.jpg"alt="">2)使⽤相对路径:在image⽬录中创建⼀个html,并访问上级⽬录的rose.jpg,如<imgsrc="../rose.jpg"alt="">3)使⽤绝对路径:最好使⽤/,不要使⽤\,如<imgsrc="D:/rose.jpg"alt="">4)使⽤绝对路径:使⽤⽹络路径

<imgsrc="https:///blog/130623/201407/300958475557219.png"alt="">5)设置宽度和高度、边框

<imgsrc="https:///blog/130623/201407/300958475557219.png"alt=""width="300px"heigth="300px"border="1px">或者<imgsrc="https:///blog/130623/201407/300958475557219.png"alt=""width="30%"heigth="300%"border="1px">8、超链接标签:ahref:必须具备,表示点击后会跳转到哪个⻚⾯.target:打开⽅式,默认是self(当前页面打开此链接),如果是blank则⽤新的标签⻚打开(新页面打开此链接)。外部链接:href引⽤其他⽹站的地址<ahref="">百度</a>内部链接:⽹站内部⻚⾯之间的链接,写相对路径即可,先创建⼀个1.html<ahref="2.html">点我跳转到2.html</a>空链接:使⽤#在href中占位<ahref="#">空链接</a>下载链接:href对应的路径是⼀个⽂件<ahref="test.zip">下载⽂件</a>⽹⻚元素链接:可以给图⽚等任何元素添加链接(把元素放到a标签中)<ahref=""><imgsrc="rose.jpg"alt=""></a>9、超链接标签:a锚点链接:可以快速定位到⻚⾯中的某个位置<ahref="#one">第⼀集</a><ahref="#two">第⼆集</a><ahref="#three">第三集</a><pid="one">第⼀集剧情<br>第⼀集剧情<br>...</p><pid="two">第⼆集剧情<br>第⼆集剧情<br>...</p><pid="three">第三集剧情<br>10、表格标签 table标签,表示整个表格,table包含tr,tr包含td或者th tr:表示表格的⼀⾏ td:表示⼀个单元格 th:表示表头单元格.会居中加粗 thead:表格的头部区域(注意和th区分,范围是⽐th要⼤的) tbody:表格主体区域设置⼤⼩边框等,⼀般使⽤CSS⽅式来设置。这些属性都要放到table标签中。align:是表格相对于周围元素的对⻬⽅式,align="center"(不是内部元素的对⻬⽅式)border:表示边框,1表示有边框(数字越⼤,边框越粗),""表示没边框.cellpadding:内容距离边框的距离,默认1像素cellspacing:单元格之间的距离,默认为2像素width/height:设置尺⼨。

11、列表标签

主要使⽤来布局的,整⻬好看,⽆序列表[重要]ulli,.(ol:unorderlist),最常见有序列表[⽤的不多]olli(ol:orderlist)⾃定义列表[重要]dl(总标签),dt(⼩标题),dd(围绕标题来说明),上⾯有个⼩标题,下⾯有几个围绕着标题来展开的。注意:元素之间是并列关系;ul/ol中只能放li不能放其他标签,dl中只能放dt和dd;li中可以放其他标签;列表带有⾃⼰的样式,可以使⽤CSS来修改。12、表单标签

表单是让⽤户输⼊信息的重要途径,分成两个部分:表单域:包含表单元素的区域,重点是form标签。表单控件:输⼊框,

提交按钮等,重点是input标签。

<formaction="test.html">

...[form的内容]

</form>input标签:各种输⼊控件、单⾏⽂本框、密码框、按钮、单选框、复选框。type:(必须有),取值种类很多,button,checkbox,text,file,image,password,radio等。name:给input起了个名字,尤其是对于单选按钮,具有相同的name才能多选⼀。value:input中的默认值。checked:默认被选中(⽤于单选按钮和多选按钮)。maxlength:设定最⼤⻓度。谢谢!大数据采集与预处理技术*

*项目一表情图像数据采集和预处理序号软件配置要求1python3运行计算机内存8G以上2pytorch最新版本3pycharm最新版本一、项目目标:1、完成表情图像数据采集环境安装配置,掌握爬虫必备知识;2、完成表情图像数据爬虫采集程序设计和数据采集;3、完成表情图像数据预处理。二、环境要求:反爬处理01常见反爬机制02反反爬方法03综合案例常见反爬机制/01反爬机制(1)

IP封禁机制:网站会监控访问频率,如果某个IP在短时间内发送大量请求,可能会被封禁。(2)

验证码机制:网站通过验证码(如GooglereCAPTCHA)来区分人类用户和爬虫。(3)

动态加载机制:网站通过JavaScript动态加载数据,传统的爬虫无法直接获取这些数据。(4)

请求头检测机制:网站会检查请求头中的

User-Agent、Referer

等字段,如果缺失或不合法,会拒绝请求。(5)

频率限制机制:网站会限制单位时间内的请求次数,超过限制会被封禁。(6)

数据加密机制:网站对关键数据进行加密(如字体加密),爬虫无法直接解析。反反爬方法/02反反爬方法(1)

IP封禁通过代理IP池轮换IP地址,避免被封禁。importrequestsproxies={'http':':8888','https':':8888'}response=requests.get('',proxies=proxies)print(response.text)(2)

模拟浏览器行为设置合法的请求头(如

User-Agent、Referer),模拟浏览器访问。headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36','Referer':''}response=requests.get('',headers=headers)print(response.text)反反爬方法(3)处理验证码使用验证码识别服务或手动输入验证码。importpytesseractfromPILimportImage#指定Tesseract的安装路径(如果需要)pytesseract.pytesseract.tesseract_cmd=r'D:/Tesseract-OCR/tesseract.exe'#Windows示例#提取文本captcha_text=pytesseract.image_to_string(Image.open('img.png'),config=‘--tessdata-dirD:/Tesseract-OCR/tessdata/--psm8’)#可以根据需要指定可以解析的语言--psm8表示解析单行文字print(captcha_text)针对解析效果不好问题怎么解决?请同学们思考。(4)处理动态加载使用无头浏览器(如Selenium或Playwright)模拟用户操作。fromseleniumimportwebdriver#使用Chrome无头模式options=webdriver.ChromeOptions()options.add_argument('--headless')driver=webdriver.Chrome(options=options)driver.get('')print(driver.page_source)#获取动态加载后的页面内容driver.quit()反反爬方法(5)降低请求频率设置合理的请求间隔时间,避免触发频率限制。importtimeimportrequestsforiinrange(10):response=requests.get('')print(response.text)time.sleep(5)#每次请求间隔5秒(6)破解数据加密分析加密逻辑(如字体加密),编写解密代码。#假设价格信息使用字体加密#1.下载字体文件#2.解析字体文件,生成映射关系#3.替换加密字符为真实字符综合案例/03爬取豆瓣电影Top250importrequestsfrombs4importBeautifulSoupimporttime#设置请求头headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36'}#爬取函数defscrape_douban_top250():base_url='/top250'forpageinrange(0,250,25):url=f'{base_url}?start={page}'response=requests.get(url,headers=headers)soup=BeautifulSoup(response.text,'html.parser')#解析电影信息#解析电影信息

foriteminsoup.find_all('div',class_='item'):title=item.find('span',class_='title').textrating=item.find('span',class_='rating_num').textlink=item.find('a')['href']print(f"电影:{title},评分:{rating},链接:{link}")#降低请求频率

time.sleep(5)#运行爬虫scrape_douban_top250()大数据采集与预处理技术*

*项目一表情图像数据采集和预处理序号软件配置要求1python3运行计算机内存8G以上2pytorch最新版本3pycharm最新版本一、项目目标:1、完成表情图像数据采集环境安装配置,掌握爬虫必备知识;2、完成表情图像数据爬虫采集程序设计和数据采集;3、完成表情图像数据预处理。二、环境要求:任务二表情图像数据采集一、任务目标1、完成表情图像数据公开数据集采集;2、完成表情图像数据的采集和保存;二、知识储备1、公开数据集分析;2、公开数据集采集数据方法;1、常用的图像公开数据集数据集数据集介绍应用场景链接ImageNetImageNet是一个庞大的图像数据库,包含数千万的标注图像,用于对象识别和图像分类。它为计算机视觉领域的深度学习研究提供了大量的训练和测试数据。该数据集中的图像分为多达20000多个类别,每个类别下有成千上万张图片。ImageNet是许多计算机视觉竞赛的标准数据集,尤其是著名ImageNetLargeScaleVisualRecognitionChallenge(ILSVRC)。/COCOCOCO数据集包含超过330000张图像,其中80多万个对象被标注。数据集包括91类日常生活中的物体,如人、动物、交通工具等。COCO数据集的标注不仅包括物体的分类,还包括物体的分割、多物体检测和关键点检测(如人体关键点)。该数据集常用于对象检测、图像分割、关键点检测和全景分割等任务。/PascalVOCPascalVOC是一个广泛使用的计算机视觉数据库,最初用于对象分类和检测任务。它提供了一系列标注好的图像,包含20种类别的物体。PascalVOC数据集具有精确的图像标注,包括物体检测的边界框和分类。PascalVOC通常用于对象检测、分类、语义分割等任务,曾是视觉领域重要的基准数据集。http://host.robots.ox.ac.uk/pascal/VOC/CIFAR-10/CIFAR-100CIFAR-10和CIFAR-100是较小的图像数据集,分别包含10个类别和100个类别的对象图像,每个类别有6000张图片。图像尺寸为32x32像素,适合快速原型设计和深度学习模型的入门实验。通常用于图像分类任务的研究和实验,特别是在深度学习和神经网络领域。/~kriz/cifar.html

温馨提示

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

评论

0/150

提交评论