人工基础智能训练 7_第1页
人工基础智能训练 7_第2页
人工基础智能训练 7_第3页
人工基础智能训练 7_第4页
人工基础智能训练 7_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

第三章

数据采集与处理学习目标知识目标了解数据采集与预处理的相关知识了解数据来源了解数据采集与预处理的方法掌握数据采集工具使用能力目标会使用Request库实现数据采集会使用PIL库进行图片预处理会使用Pandas库进行数据预处理素质目标培养良好的学习态度和学习习惯培养良好的人际沟通和团队协作能力培养正确的科学精神和创新意识第三章

数据采集与处理数据采集与处理概述3.1实训案例

3.5文本数据采集3.2图像数据增强与预处理3.4智能酒店评价分析系统3.33.1数据采集与处理概述人工智能项目的成功在很大程度上依赖于高质量的数据。数据采集与预处理作为这一过程的基石,其核心任务在于确保数据的全面性、准确性和一致性。这包括从各种来源有效收集相关数据,如传感器、数据库、网络等,并对其进行必要的清洗、去重、格式转换和标准化处理,以消除噪声、填补缺失值并提升数据质量。任务描述01系统地收集高质量、相关性强的数据,并通过一系列清洗、转换和规范化操作,以提升数据的质量和一致性,数据采集与预处理的任务是构建一个健壮、高效的数据集,为后续的模型训练和算法应用提供可靠支撑,从而推动人工智能技术的实际应用和持续发展。任务分析02知识准备03数据采集与处理概述3.1.1引言

3.1.2认识数据

3.1.3常见的数据采集方法3.1.4数据预处理3.1.1引言海量非结构化数据因缺少关联性或数据库不兼容而价值低,需整合处理。AI训练师需收集、处理数据,来源于数据库、传感器、网络等,进行清洗、标注、转换等预处理。流程框架:需求分析→采集→清洗→标注→增强→存储→管理。数据是AI模型“燃料”,质量影响性能。低质量数据导致模型偏差(Bias)、过拟合(Overfitting)或欠拟合(Underfitting)。高质量数据特征:多样性(Diversity)、代表性(Representativeness)、平衡性(Balance)、一致性(Consistency)。高质量数据影响算法选择,小数据用迁移学习,大数据可训练复杂模型。数据质量弥补算法不足,简单模型也能显著提升效果。3.1.2认识数据目前,数据的来源非常广泛,包括公司的内部数据和外部数据,例如企业管理系统里数据库数据、物联网数据、网络数据等,数据已成为企业和社会发展的核心资源。然而,并非所有数据都生而平等,根据结构的不同被划分为结构化、半结构化和非结构化三大类。结构化数据是指具有明确格式和规则的数据,通常以表格或数据库的形式存在。这类数据具有固定的字段和属性,每个字段都有特定的数据类型和取值范围。特点是有明确的结构:数据按照特定的规则组织,如表格中的行和列,数据库中的表和字段。高可读性:数据的格式清晰,易于被计算机系统和人类理解。结构化数据广泛应用于金融、医疗、物流、电子商务等领域。例如,在医疗领域,通过对患者的结构化数据进行分析,可以辅助医生进行诊断和治疗;在金融领域,通过对交易数据的分析,可以评估市场趋势和制定投资策略。3.1.2认识数据半结构化数据位于结构化数据和非结构化数据之间,其结构隐含在数据中,或者模式繁多且经常变化。这类数据通常具有自描述性,如XML和JSON。特点:自描述性:数据与结构相交融,无需区分“元数据”和“一般数据”。动态性:数据变化通常会导致结构模式变化。复杂性:结构难以纳入现有的描述框架,理解和把握较为困难。半结构化数据常见于互联网应用中,如网页内容、社交媒体数据等。它们为数据挖掘、内容管理和信息检索提供了丰富的数据源。非结构化数据是指数据结构不规则、不易用数据库二维逻辑表来表现的数据。这类数据包括文本、图片、音频、视频等多种形式。特点是结构多样性:没有固定的格式或模式。内容丰富性:包含大量的多媒体信息。非结构化数据在各个领域都有广泛应用。处理难度大:需要复杂的技术和方法进行处理和分析。例如,在自然语言处理领域,通过对文本数据的处理和分析,可以实现自动翻译、情感分析等功能;在计算机视觉领域,通过对图像和视频数据的处理和分析,可以实现目标检测、人脸识别等功能。表3-1结构化数据3.1.3常见的数据采集方法早期数据采集一般是通过人工录入、调查研究、电话随访等方式实现。随着“大数据”时代的到来,面对海量数据,人工方式采集数据变得十分简单。因此需要技术手段进行数据采集。目前,常用的数据采集方法有网络爬虫采集、日志数据采集,以及商业工具采集。其中网络爬虫采集是核心技术。网络爬虫采集网络爬虫(WebCrawler),也称为网络蜘蛛(WebSpider)或网络机器人(WebRobot),是一种通过自动化程序模拟人类浏览网页的行为,从互联网上批量抓取、解析和存储数据的工具,这些信息可以是网页、图片、音频、视频等。它是数据采集的核心技术之一,广泛应用于搜索引擎、数据分析、市场研究等领域。3.1.3常见的数据采集方法1.网络爬虫分类网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(GeneralPurposeWebCrawler)、聚焦网络爬虫(FocusedWebCrawler)、增量式网络爬虫(IncrementalWebCrawler)、深层网络爬虫(DeepWebCrawler)。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。通用网络爬虫又称全网爬虫(ScalableWebCrawler),爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。虽然存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL队列、初始URL集合几个部分。通用网络爬虫会采取一定的爬行策略。常用的爬行策略有:深度优先策略、广度优先策略。3.1.3常见的数据采集方法深度优先策略:其基本方法是按照深度由低到高的顺序,依次访问下一级网页链接,直到不能再深入为止。爬虫在完成一个爬行分支后返回到上一链接节点进一步搜索其它链接。当所有链接遍历完后,爬行任务结束。这种策略比较适合垂直搜索或站内搜索,但爬行页面内容层次较深的站点时会造成资源的巨大浪费。广度优先策略:此策略按照网页内容目录层次深浅来爬行页面,处于较浅目录层次的页面首先被爬行。当同一层次中的页面爬行完毕后,爬虫再深入下一层继续爬行。这种策略能够有效控制页面的爬行深度,避免遇到一个无穷深层分支时无法结束爬行的问题,实现方便,无需存储大量中间节点,不足之处在于需较长时间才能爬行到目录层次较深的页面。

3.1.3常见的数据采集方法聚焦网络爬虫(FocusedCrawler),又称主题网络爬虫(TopicalCrawler),是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。聚焦网络爬虫和通用网络爬虫相比,增加了链接评价模块以及内容评价模块。聚焦爬虫爬行策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同。3.1.3常见的数据采集方法增量式网络爬虫(IncrementalWebCrawler)是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。增量式网络爬虫的体系结构[包含爬行模块、排序模块、更新模块、本地页面集、待爬行URL集以及本地页面URL集。

3.1.3常见的数据采集方法增量式爬虫有两个目标:保持本地页面集中存储的页面为最新页面和提高本地页面集中页面的质量。为实现第一个目标,增量式爬虫需要通过重新访问网页来更新本地页面集中页面内容,常用的方法有:(1)统一更新法:爬虫以相同的频率访问所有网页,不考虑网页的改变频率;(2)个体更新法:爬虫根据个体网页的改变频率来重新访问各页面;(3)基于分类的更新法:爬虫根据网页改变频率将其分为更新较快网页

子集和更新较慢网页子集两类,然后以不同的频率访问这两类网页。

3.1.3常见的数据采集方法DeepWeb爬虫:Web页面按存在方式可以分为表层网页(SurfaceWeb)和深层网页(DeepWeb,也称InvisibleWebPages或HiddenWeb)。表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的Web页面。DeepWeb是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。例如那些用户注册后内容才可见的网页就属于DeepWeb。DeepWeb爬虫爬行过程中最重要部分就是表单填写。

3.1.3常见的数据采集方法2.网络爬虫用途网络爬虫(WebCrawler)是一种自动化的程序,主要用于从互联网上抓取、解析和存储数据。其用途广泛,以下是其主要应用场景:搜索引擎索引:搜索引擎(如Google、百度)通过爬虫遍历全网,抓取网页内容并建立索引库,使用户能快速检索到目标信息。爬虫持续扫描新网页或更新现有页面,确保搜索结果实时性。数据采集与分析:商业决策方面,企业抓取公开数据(如电商价格、用户评论)进行市场分析、竞品监测或价格策略优化。例如:电商平台监控竞争对手的价格波动,旅游网站聚合酒店、机票信息提供比价服务。也可对企业相关数据进行采集,对天眼查、企查查中企业数据进行搜集。内容聚合与新闻监测:新闻聚合平台(如今日头条)利用爬虫收集多家媒体的内容,按主题分类展示。新文件册领域,例如舆情监控,政府或企业实时抓取社交媒体、论坛数据,分析公众对事件或品牌的舆论倾向。美国2012年大选期间,奥巴马有100多名专门从事数据分析的人员,通过实时采集社交评论,进行竞选活动。3.1.3常见的数据采集方法3.网络爬虫流程用户获取网络数据有两种方式,一是通过浏览器发送请求→下载网页数据→浏览器解析网页;另一种是模拟浏览器发送请求(获取网页代码)→接受响应→解析网页→存储数据或继续发送请求。网络爬虫一般采用第二种方式,其具体流程如下:(1)发送请求Request在爬虫过程中一般使用HTTP通过URL对目标站点发送请求,即Request请求。通常在请求中设置请求头Headers。常见的请求头设置有,添加User-Agent伪装成浏览器;处理Cookies(如登录态维持);设置请求间隔(避免触发反爬机制)3.1.3常见的数据采集方法(2)接受响应Response请求成功发送到对方服务器后,经过对方验证成功后,会返回带有目标数据的包裹,称为响应Response。响应包含响应行、响应头、响应体等。响应体‌包含服务器返回的实际数据,如HTML页面内容、图片、视频等,客户端可以使用这些数据展示在浏览器。(3)解析网页解析网页实质上是在返回的响应体中提取出目标信息,通常使用BeautifulSoup、lxml或正则表达式提取标签内的数据。(4)存储数据或继续发送请求提取出的数据可以保存在数据库中(常用的数据库有MySql、MongoDB),或者保存为JSON、CSV等文件。继续发送请求又称循环爬取与链接发现,从解析出新的URL(如分页链接、详情页链接),重复执行步骤1-3。图3-1采集流程3.1.3常见的数据采集方法4.网络爬虫关键工具与技术栈Python中有多个用于网络爬虫操作的库和框架,如Requests、Xpath、BeautifulSoup、Scrapy等。(1)Requests库Requests是一个Python第三方库,用于发送HTTP请求。它由KennethReitz开发,以其简洁的API和强大的功能而广受好评。Requests库允许你发送各种HTTP请求,包括GET、POST、PUT、DELETE等,并且支持HTTP连接保持、连接池、会话等高级功能。特点:简单易用:相比标准库urllib,代码更简洁直观。功能全面:支持会话管理、代理、SSL验证、文件上传等。(2)Xpath库XPath(XMLPathLanguage)是一种用于在XML/HTML文档中定位节点

的查询语言,通过路径表达式快速提取数据。特点:精准定位:通过节点路径、属性或文本内容筛选数据。跨平台支持:广泛应用于XML解析、网页爬虫(如配合lxml、Scrapy)。灵活高效:支持复杂条件过滤和逻辑运算。3.1.3常见的数据采集方法(3)BeautifulSoup库BeautifulSoup是Python中一个用于解析HTML/XML文档

的第三方库,可将复杂文档转换为树形结构,便于提取数据。特点:语法简洁:提供直观的导航、搜索和修改方法(如find()、select())。解析器灵活:支持lxml、html5lib等解析引擎,兼容性高。容错性强:自动修正不规范的HTML代码(如未闭合标签)。(4)Scrapy框架Scrapy是一个基于Python的开源网络爬虫框架,专为高效、结构化的大规模数据抓取设计,提供完整的爬虫开发工具链。核心优势:模块化架构:组件可定制(如中间件、管道),适合复杂需求。异步处理:基于Twisted的异步引擎,支持高并发抓取。内置功能:自动处理请求队列、去重、异常重试、数据导出等。扩展性强:支持分布式爬虫(如结合Scrapy-Redis)、动态页面渲染(如Splash)。3.1.3常见的数据采集方法日志数据采集日志数据采集是从各系统、应用、设备或网络中收集、传输、存储、分析日志信息的过程。日志记录系统状态、用户行为、错误事件等。核心目标:监控告警、安全审计、业务分析。日志采集的常见方式(1)Agent(代理)采集在目标机器部署轻量级代理程序(如Filebeat、Fluentd),实时监听日志文件变化并转发。适用场景:分布式系统、多服务器环境。(2)日志文件直接采集通过脚本或工具(如rsync、scp)定期拉取日志文件到中心存储。适用场景:小型系统或低频日志采集。缺点:实时性差,可能丢失滚动日志(如日志文件被切割)。(3)流式采集(实时管道)通过消息队列(如Kafka、RabbitMQ)实时接收日志流。适用场景:高吞吐量、低延迟的日志处理(如广告点击流)。3.1.3常见的数据采集方法商业工具采集商业数据采集工具是由企业提供的付费服务或软件,旨在通过

自动化、低代码/无代码

方式,从网页、API、数据库等来源高效获取结构化数据。(1)八爪鱼采集器八爪鱼网页数据采集器,是一款使用简单、功能强大的网络爬虫工具,完全可视化操作,无需编写代码,内置海量模板,支持任意网络数据抓取。核心功能:无代码可视化操作:通过点选界面设计采集流程,适合非技术人员。动态页面支持:自动渲染JavaScript和Ajax加载的内容。云采集与定时任务:支持云端分布式爬取和定时自动更新数据。3.1.3常见的数据采集方法(2)BrightData(原LuminatiNetworks)亮数据BrightData作为一站式网络数据采购平台领航者,通过提供高速、稳定、安全的代理服务解决方案,为企业和个人在大数据时代中抢占先机。其广泛的数据源覆盖、灵活的API集成及智能的数据处理功能,挖掘数据价值。核心功能:全球代理网络:覆盖195个国家/地区的住宅和数据中心IP。动态页面采集:支持无头浏览器(HeadlessChrome)渲染复杂页面。数据合规性:提供GDPR兼容的数据处理方案。3.1.4数据预处理采集的数据往往是杂乱的,主要表现为数据属性值遗漏或不确定、由于原始数据的来源不同,数据内涵不同、数据中存在异常和数据重复等问题。该类数据无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术。数据预处理是数据采集后的关键步骤,旨在将原始数据转化为适合分析的规范化形式。其核心是解决数据的质量问题,提升后续建模或分析的准确性。数据预处理的核心目标:提高数据质量:消除噪声、错误和冗余;统一数据格式:整合多源异构数据;提升数据可用性:使数据适配算法需求;降低计算成本:通过优化减少数据规模。3.1.4数据预处理1.数据预处理方式数据预处理就是对大量杂乱且难以理解的数据进行操作的过程,能够极大的提高数据的总体质量。目前常见的数据预处理方法有4种,分别是数据清洗(DataCleaning)、数据集成(DataIntegration)、数据变换(DataTransformation)、数据规约(DataReduction)。(1)数据清洗数据清洗(Datacleaning)–对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性。数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。一致性检查(consistencycheck)是根据每个变量的合理取值范围和相互关系,检查数据是否合乎要求,发现超出正常范围、逻辑上不合理或者相互矛盾的数据。无效值和缺失值的处理,常用的处理方法有:估算,整列删除,变量删除和成对删除。表3-2数据清洗3.1.4数据预处理(2)数据集成数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。在企业数据集成领域,已经有了很多成熟的框架可以利用。通常采用联邦式、基于中间件模型和数据仓库等方法来构造集成的系统,这些技术在不同的着重点和应用上解决数据共享和为企业提供决策支持。(3)数据变换数据转换主要用于数据的规范化处理。数据转化将不符合要求的数据或数据格式转化为适合统计和分析的数据。数据转换常用方式如下所示:表3-3数据变换3.1.4数据预处理(4)数据规约数据规约即数据的精简操作,能够在尽可能保持数据源代码的前提下精简数据,并且精简后的数据预原数据发挥的作用相同。通过数据规约,不仅可以降低数据存储成本,而且可以极大地减少数据分析时间,还可以减少无效、错误的数据,从而提高分析准确率。数据规约常用方式如下所示。表3-4数据转换常用方式3.1.4数据预处理2.数据预处理工具针对数据预处理,有多种数据预处理工具可以满足不同开发人员的需求。目前常用的预处理工具有Pandas库、Pig和ELK。(1)PandasPandas是基于NumPy的一种工具,该工具是为解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。3.1.4数据预处理(2)PigPig是一个基于Hadoop的大规模数据分析工具,它提供了一个支持大规模数据分析的平台。Pig使用一种类似SQL的编程语言PigLatin,该语言的编译器会将数据分析请求转换为优化后的MapReduce运算。Pig的主要特点是易于编程、自动优化和可扩展性,特别适合处理大规模数据集‌。3.1.4数据预处理(3)ELKELK是一套解决方案而不是一款软件,三个字母分别是三个软件产品的缩写。E代表Elasticsearch,负责日志的存储和检索;L代表Logstash,负责日志的收集,过滤和格式化;K代表Kibana,负责日志的展示统计和数据可视化。其中Elasticsearch是核心,L和K都有相应的替代方案。3.1.4数据预处理Elasticsearch:基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架此架构的优点是搭建简单,易于上手。Logstash:ELK的中央数据流引擎,用于对日志进行收集、过滤,对数据进行格式化处理。Kibana:将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。ELK的工作流程:1.Logstash收集数据,如日志文件、数据库等。2.Logstash清洗、转换、过滤数据。3.数据发送到Elasticsearch。4.Elasticsearch索引存储数据。5.Kibana连接到Elasticsearch,展示数据。

3.2文本数据采集文本数据采集是数据采集领域的一项基础工作。文本数据采集是指从各种来源收集文本数据并将其转换为数字格式的过程。其目的是在一个特定的环境中采集信息,以便公司能够容易地处理和分析这些数据‌。下面将以古诗词的数据采集为例,介绍如何通过Requests库对古诗词网站(/)进行文本数据采集。任务要求完成对古诗词网站首页所有古诗词标题和内容的打印。任务描述01本任务将通过Python实现古诗词网站首页所有古诗词标题和内容的提取和打印。1.页面分析:古诗词网首页为静态页面,url地址为/。通过查看网页源代码,并进行搜索确认,可发现网页源代码的返回值中存有古诗词的标题和内容。2.采集和提取方法:可使用Python中Requests库进行数据采集和lxml库使用xpath方式进行数据的提取。任务分析02知识准备03文本数据采集3.2.1Requests库

3.2.2Xpath的使用3.2.3lxml库

3.2.1Requests库

requests库是Python中一款流行的HTTP请求库,用于简化HTTP请求的发送和处理,也是我们在使用Python做接口自动化测试时,最常用的第三方库。1.Requests库的安装首先,我们要先安装好Python环境。然后,可以在cmd命令行中使用pip命令来安装requests库:pipinstallrequests默认情况下,pip从官方的PythonPackageIndex(PyPI)下载包,但由于网络原因,国内用户可能会遇到下载速度慢或连接失败的问题。为了解决这个问题,可以将pip的源更换为国内的镜像源方法。例如,从国内的豆瓣镜像安装requests包,可以这样操作:pipinstallrequests-i/simple3.2.1Requests库

2.Requests库的使用Requests库支持多种HTTP请求方式,其中最常用的是GET请求和POST请求。GET请求通常用于获取网页或接口数据,而POST请求则用于向服务器发送数据。掌握这两种请求的使用方式是进行网页抓取的基础。发送GET请求GET请求是HTTP协议中最常见的请求方式,用于请求指定的资源或数据。使用Requests发送GET请求非常简单,只需要调用requests.get()方法,并传入目标URL。注意:response.status_code返回HTTP响应的状态码,200表示请求成功。response.text返回的是响应的内容,即网页的HTML源代码。3.2.1Requests库

发送POST请求POST请求用于向服务器提交数据,通常用于表单提交或API数据创建。使用requests.post()方法可以发送POST请求,常见的请求体格式有JSON、form-data等。使用data=发送表单数据(application/x-www-form-urlencoded)。response.json()用于解析返回的JSON格式响应,返回Python字典。3.2.1Requests库

处理Cookies和Headers在爬虫中,常常需要模拟浏览器行为,这时处理Cookies和Headers是非常重要的。通过设置请求头(Headers)和Cookies,爬虫能够模仿真实用户访问网站的行为,避免被反爬虫机制阻止。设置请求头(Headers),请求头是HTTP请求中的一部分,包含了请求的元信息,如User-Agent、Content-Type、Authorization等。正确地设置请求头能够帮助爬虫绕过一些简单的反爬虫措施。Cookies是服务器在浏览器端存储的小块数据,用于保持会话状态。通过Requests发送请求时,可以手动传递Cookies,或者在会话中自动管理Cookies。常见的请求头如下表所示:表3-5常见请求头3.2.1Requests库

设置请求头和传递Cookies的代码如下:3.2.1Requests库

Response对象Requests库的Response对象是用于表示从远程服务器收到的响应。当你使用Requests库发送HTTP请求时,如requests.get(),requests.post()等。这些方法会返回一个Response对象,该对象包含了服务器返回的所有信息。‌‌response.text‌:将响应体转换为字符串形式。适用于处理文本数据。‌response.content‌:获取响应体的二进制内容,适用于处理图像、视频等非文本类型的响应。response.status_code‌:获取响应的状态码。response.headers‌:获取响应头信息,返回一个字典对象。response.encoding:修改响应编码方式3.2.2Xpath的使用

XPath(XMLPathLanguage)是一种在XML文档中查找信息的语言,它基于XML的树状结构,提供在数据结构树中找寻节点的能力‌‌。XPath最初设计是用来搜寻XML文档的,但同样适用于HTML文档的搜索,因此在爬虫和Web自动化测试中广泛应用‌下面列出了最有用的路径表达式:表3-6Xpath表达式3.2.2Xpath的使用

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:表3-7Xpath路径表达式含义XPath定位,相较于id、name等其他定位方法,定位方式多样,使用灵活。3.2.2Xpath的使用

1.绝对路径定位绝对路径定位不推荐,可以通过开发者页面,右键copy-copyfullxpath直接获取。示例如下。/html/body/div[4]/div/div[2]/div/div[1]2.相对路径定位。相对路径定位,以//开头,后面跟标签名。相对路径定位是最常用的定位方式,一般结合以下其他定位方式,共同组成元素的xpath路径。示例如下。//input匹配所有input元素//div/input匹配所有父级为div的input元素//a/..匹配子级中有a的所有元素(即,匹配所有a元素的父级)3.索引定位索引路径定位,在[]中填写索引数值,第一个元素的索引值为1。//div[2]匹配所有在兄弟级中排第2的div元素(即,任意元素下的第2个div元素)4.属性名称定位//input[@placeholder]匹配所有包含placeholder属性的input元素3.2.2Xpath的使用

5.属性值定位//input[@type='text']匹配所有type属性为text的input元素

//input[@type='text'][@placeholder='请输入名称']匹配所有type属性为text,且placeholder属性为“请输入名称”的input元素

//input[@type='text'and@placeholder='请输入名称']匹配所有type属性为text,且placeholder属性为“请输入名称”的input元素

//input[@type='text'or@placeholder='请输入名称']匹配所有type属性为text,或placeholder属性为“请输入名称”的input元素3.2.2Xpath的使用

6.属性值模糊定位//input[start-with(@id,'pre')]匹配所有id属性以pre开头的input元素//input[ends-with(@id,’name’)]匹配所有id属性以name结尾的input元素//input[contains-with(@id,'user')]匹配所有id属性包含user的input元素//input[@*='username']匹配所有任意属性值为username的input元素3.2.3lxml库

在Python开发中,经常需要处理XML和HTML数据,如网页数据抓取、配置文件解析等。lxml是一个功能强大且高效的库,它基于libxml2和libxslt库,提供了简洁易用的API来处理XML和HTML文档。1.lxml的安装pipinstalllxml2.lxml使用方法lxml库提供了一个etree模块,该模块专门用来解析HTML/XML文档,下面我们简单介绍一下lxml库的使用流程。lxml用于解析HTML文档。这里使用etree.HTMLParser()创建一个HTML解析器,然后将其传递给etree.fromstring()方法来解析HTML数据,如下所示:

3.2.3lxml库

lxml对XPath提供了很好的支持。以下是一个使用XPath提取数据的示例,在这个示例中,xpath()方法用于执行XPath表达式,返回符合条件的元素或文本:3.3智能酒店评价分析系统某连锁酒店集团收到来自B的20,000条客户评价(含英文/中文/日文),包含以下字段:评价ID、入住日期、评分(1-5)、评论文本、回复状态、客户国家(结构化与非结构化数据混合)。任务描述01根据上述数据要求可结合excel和AI技术实现以下目标:实现多语言情感自动标注(积极/中性/消极)、构建动态服务质量仪表盘和预测未来3个月客户满意度趋势。任务分析02知识准备03智能酒店评价分析系统1.Excel数据预处理2.AI情感分析3.智能可视化4.满意度预测3.3智能酒店评价分析系统

1.Excel数据预处理PowerQuery进阶应用:异常值清洗://过滤无效评分=Table.SelectRows(#"ChangedType",each[评分]>=1and[评分]<=5)多语言识别://添加语言识别列数据分片处理(解决Excel行数限制):使用OFFSET函数创建动态分页=IF(ROW()-2<COUNT(评分!A:A),INDEX(评分!A:A,(ROW()-2)*1000+1),"")3.3智能酒店评价分析系统

2.AI情感分析Azure文本分析集成:3.3智能酒店评价分析系统

3.智能可视化动态仪表盘搭建:情感分布旭日图=FILTER(评价明细,(语言="中文")*(YEAR(入住日期)=2023))服务质量关联分析://使用数据透视表+条件格式=GETPIVOTDATA("评分",$A$3,"情感",B5,"国家",C$4)4.满意度预测3.4图像数据增强与预处理完成对指定文件夹中的图像数据进行一系列增强和预处理操作,包括图像旋转、水平翻转、随机裁剪、灰度转换以及去除分辨率较低的图片。通过这些操作,丰富图像数据集,提高模型的泛化能力和鲁棒性。任务描述01在机器学习和深度学习项目中,尤其是计算机视觉领域,图像数据的质量和多样性对模型的性能至关重要。数据增强是一种常用的提高模型泛化能力的方法,通过对原始图像进行旋转、翻转、裁剪等操作,可以生成更多的训练样本,从而提高模型的鲁棒性和准确性。此外,去除分辨率较低的图片可以确保数据集的质量,避免低质量图像对模型训练产生负面影响。任务分析02知识准备03图像数据增强与预处理3.4.1图像旋转3.4.2图像水平翻转3.4.3图像随机裁剪

3.4.4图像灰度转换3.4.5去除分辨率较低的图片

3.4.1图像旋转

代码说明如下:读取图片:使用os.listdir列出指定文件夹中的所有图片文件,并过滤出.png或.jpg文件.旋转图片:使用Pillow库中的rotate方法来旋转图片。expand=True参数确保图像在旋转后不会被裁剪,并调整了图像尺寸以容纳旋转后的图像。保存图片:将处理后的图片保存到指定的输出文件夹中。如果文件夹不存在会自动创建。最终提示:处理完所有图片后,脚本会输出一个提示,告知用户所有增强的图片已经保存到指定的文件夹中。3.4.1图像旋转

3.4.2图像水平翻转

代码说明如下:水平镜像翻转:使用Pillow库中的transpose方法和Image.FLIP_LEFT_RIGHT参数对图片进行水平镜像翻转。保存图片:将翻转后的图片保存到指定的输出文件夹中。如果文件夹不存在会自动创建。最终提示:处理完所有图片后,脚本会输出一个提示,告知用户所有增强的图片已经保存到指定的文件夹中。3.4.2图像水平翻转

3.4.3图像随机裁剪

代码说明如下:随机裁剪区域的计算:crop_ratio定义了裁剪后的图片尺寸相对于原图的比例。例如,crop_ratio=0.5表示裁剪后的图片尺寸为原图的50%大小。随机生成裁剪区域的左上角坐标(left,top),确保裁剪区域不超过原图的范围。裁剪操作:使用img.crop()方法进行裁剪,裁剪区域由(left,top,right,bottom)四个坐标值决定。保存图片:将裁剪后的图片保存到指定的输出文件夹中。如果文件夹不存在会自动创建。最终提示:处理完所有图片后,脚本会输出一个提示,告知用户所有增强的图片已经保存到指定的文件夹中。3.4.3图像随机裁剪

3.4.3图像随机裁剪

3.4.4图像灰度转换

代码说明如下:文件路径定义:input_folder是图片的输入文件夹路径。output_folder是保存处理后图片的输出文件夹路径。需要将

数据增强+准考证号后四位

替换为你的实际准考证号后四位。检查并创建输出文件夹:使用os.makedirs(output_folder,exist_ok=True)检查输出文件夹是否存在,如果不存在则创建。读取图片:使用os.listdir列出输入文件夹中的所有图片文件,并过滤出.png或.jpg文件。转换为黑白图像:使用Pillow的convert("L")方法将图像转换为灰度(黑白)图像。其中"L"模式表示亮度(luminance),即灰度图像。保存图像:将处理后的黑白图片保存到指定的输出文件夹中3.4.4图像灰度转换

3.4.5去除分辨率较低的图片

代码说明如下:

最低分辨率设置:min_width和min_height定义了最低分辨率的宽度和高度,即1920x1080。

读取图片:通过os.listdir()列出文件夹中的所有图片文件,并过滤出.png或.jpg文件。

检查图片分辨率:使用img.size获取图片的宽度和高度。如果图片的宽度或高度小于min_width或min_height,则使用os.remove()删除该图片。

删除图片:如果图片的分辨率低于设定的最低要求,则将其删除,并打印出被删除的文件名。3.4.5去除分辨率较低的图片

3.5实训案例

3.5.1古诗词网站首页古诗词标题和内容的提取和打印

项目考核

3.5.1古诗词网站首页古诗词标题和内容的提取和打印

任务描述以古诗词的数据采集为例,介绍如何通过Requests库对古诗词网站(/)进行文本数据采集。任务要求完成对古诗词网站首页所有古诗词标题和内容的打印。任务分析本任务将通过Python实现古诗词网站首页所有古诗词标题和内容的提取和打印。页面分析:古诗词网首页为静态页面,url地址为/。通过查看网页源代码,并进行搜索确认,可发现网页源代码的返回值中存有古诗词的标题和内容。采集和提取方法:可使用Python中Requests库进行数据采集和lxml库使用xpath方式进行数据的提取3.5.1古诗词网站首页古诗词标题和内容的提取和打印

实施步骤1.安装requests库和lxml库:在Anaconda虚拟环境中使用pip安装requests和lxml。2.打开Python编译器,导入必要库:importrequestsimportlxml.html3.设置目标地址为url,并使用requests库的get()方法对目标地址发送请求:url='/'res=requests.get(url)4.查看返回响应值,并打印响应文本,确认诗词标题和内容是否存在##查看响应状态码res.status_code##查看响应的文本信息res.text5.确认诗词标题和文本已经在响应的文本中后,将字符串数据做为参数传入到lxml.html.fromstring()函数中,准备后续使用xpath方法提取数据selector=lxml.html.fromstring(res.text)3.5.1古诗词网站首页古诗词标题和内容的提取和打印

实施步骤6.在网页中根据网页元素截图,确认诗词标题和诗词内容所在的xpath路径分别为://div[@class="cont"]/div[2]/p/a/b/text()和//div[@class="contson"]/text()3.5.1古诗词网站首页古诗词标题和内容的提取和打印

实施步骤7.编写提取代码name=selector.xpath('//div[@class="cont"]/div[2]/p/a/b/text()')content=selector.xpath('//div[@class="contson"]/text()'

温馨提示

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

评论

0/150

提交评论