来源爬虫程序调研报告

来源爬虫程序调研报告

一、什么是爬虫

爬虫:就是抓取网页数据的程序。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。网络爬虫就是一个爬行程序,一个抓取网页的程序,网络爬虫的基本操作是抓取网页。

二、网络爬虫的组成

网络爬虫由控制节点、爬虫节点、资源库构成。

图1.控制节点和爬虫节点的结构关系。

网络爬虫中可以有多个控制节点,每个控制节点下可以有多个爬虫节点,控制节点之间可以互相通信,同时,控制节点和其下的各爬虫节点之间也可以进行互相通信,属于同一个控制节点下的各爬虫节点间,亦可以互相通信。

控制节点,也叫作爬虫的中央控制器,主要负责根据URL地址分配线程,并调用爬虫节点进行具体的爬行。

爬虫节点会按照相关的算法,对网页进行具体的爬行,主要包括下载网页以及对网页的文本进行处理,爬行后,会将对应的爬行结果存储到对应的资源库中。

三、爬虫的技术原理与实现

3.1 爬虫的分类

爬虫可以分为四种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。

通用网络爬虫,又称全网爬虫,主要任务是为门户站点搜索引擎和大型Web服务提供商采集数据。这类爬虫的爬行范围和数量巨大,对爬行速度和存储空间有较高要求,而相对较低的要求是对爬行页面的顺序。由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。尽管存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,具有较高的应用价值。

聚焦网络爬虫,也称为主题网络爬虫,选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。与通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源。保存的页面由于数量少而更新快,可以很好地满足一些特定人群对特定领域信息的需求。聚焦爬虫和通用网络爬虫相比,增加了链接评价模块以及内容评价模块,其爬行策略实现的关键在于评价页面内容和链接的重要性。

增量式网络爬虫,是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫。增量式爬虫能够在一定程度上保证所爬行的页面是尽可能新的页面。与周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只在需要时爬行新产生或发生更新的页面,不重新下载没有发生变化的页面,从而有效减少数据下载量,及时更新已爬行的网页,但增加了爬行算法的复杂度和实现难度。

深层网络爬虫,这是按照存在方式划分的类型,与表层网页(传统搜索引擎可以索引的页面)相对,深层网页指的是以非超链接形式存在的动态网页或其他难以通过传统搜索引擎索引的页面。深层网络爬虫专门用于抓取这些深层次的网页内容。

3.2 爬虫的技术原理

通用爬虫,目标是在保持一定内容质量的情况下爬取尽可能多的站点,比如百度这样的搜索引擎就是这种类型的爬虫,如图2是通用搜索引擎的基础架构:

首先在互联网中选出一部分网页,以这些网页的链接地址作为种子URL;

将这些种子URL放入待抓取的URL队列中,爬虫从待抓取的URL队列依次读取;

将URL通过DNS解析,把链接地址转换为网站服务器对应的IP地址;

网页下载器通过网站服务器对网页进行下载,下载的网页为网页文档形式;

对网页文档中的URL进行抽取,并过滤掉已经抓取的URL;

对未进行抓取的URL继续循环抓取,直至待抓取URL队列为空。

图2.通用搜索引擎的基础架构

爬虫通常从一个或多个 URL 开始,在爬取的过程中不断将新的并且符合要求的 URL 放入待爬队列,直到满足程序的停止条件。

而我们日常见到的爬虫基本为聚焦网络爬虫,目标是在爬取少量站点的情况下尽可能保持精准的内容质量。典型的比如图3抢票软件所示,就是利用爬虫来登录售票网络并爬取信息,从而辅助商业。

图3.抢票软件

聚焦网络爬虫面向有特殊需求的人群,它会根据预先设定的主题顺着某个垂直领域进行抓取,而不是漫无目的地随意抓取。与通用网络爬虫相比,聚焦网络爬虫会根据一定的网页分析算法对网页进行筛选,保留与主题有关的网页链接,舍弃与主题无关的网页链接。其目的性更强。聚焦网络爬虫的工作原理如图4所示。

关于图4中各环节的介绍如下。

(1)根据需求确定聚焦网络爬虫的采集目标,以及进行相关的描述。

(2)获取初始URL。

(3)根据初始URL抓取对应的网页,并获得新LRL。

(4)从新URL中过滤掉与采集目标无关的URL。因为聚焦网络爬虫对网页的采集有着明确的目标,所以与目标无关的URL都会被过滤掉。

(5)将过滤后的URL放入URL队列。

(6)根据一定的抓取策略,从URL队列中确定URL优先级,并确定下一步要抓取的URL。

(7)从下一步要抓取的URL中读取新URL,以准备根据新URL抓取下一个网页。

(8)若聚焦网络爬虫满足设置的停止条件,或没有可获取的URL时,停止采集;若网络爬虫没有满足设置的停条件,则继续根据新URL抓取对应的网页,并重复步骤(3)~步骤(8)。

图4.聚焦网络爬虫的工作原理

增量式爬虫是一种用于爬取网页信息的技术,它与全量式爬虫相比具有更高效和节省资源的特点。

增量式爬虫的基本原理是通过比较已爬取的数据和新爬取的数据,只爬取和更新最新的数据。它会记录上一次爬取的状态,将新爬取的数据和已有的数据进行匹配和对比,只提取出新数据并进行存储。

增量式爬虫原理如图5所示,一般包括以下几个步骤:

初始化:设置爬取的起始点和爬取规则。

爬取网页:按照规定的规则和策略爬取网页内容,并将爬取的数据存储到数据库中。

数据对比和更新:将新爬取的数据与已有的数据进行对比,判断是否是新的数据。如果是新数据,则进行存储更新。

持续爬取:根据设定的规则和策略,定时或定量地进行持续的爬取和更新。

图5. 增量式爬虫的工作原理

通过增量式爬虫,可以实现对目标网站数据的高效爬取和及时更新,提高了爬取的效率和精确度,减少了资源的浪费和重复爬取的数据量。

3.3 爬虫的简单示例

除了使用爬虫框架来进行爬虫,也可以从头开始来编写爬虫程序,步骤如图6所示:

图6.爬虫的基本原理

接下来通过一个简单的例子来实际演示上述的步骤,我们要爬取的是某应用市场的榜单,以这个作为例子,是因为这个网站没有任何的反爬虫手段,我们通过上面的步骤可以轻松爬取到内容。

图7.网页与其对应的源代码

网页与其对应的源代码如图7所示,对于网页上的数据,假定我们想要爬取排行榜上每个app的名称以及其分类。

我们首先分析网页源代码,发现可以直接在网页源代码中搜索到“抖音”等app的名称,接着看到app名称、app类别等都是在一个<li>标签里,所以我们只需要请求网页地址,拿到返回的网页源代码,然后对网页源代码进行正则匹配,提取出想要的数据,保存下来即可,如图8所示

图8.爬虫的代码以及结果

四、爬虫的机制

1.确定爬取目标:首先需要明确要爬取的网站、要爬取的数据类型和要爬取的数据范围。

2.发起请求:爬虫程序通过 HTTP 或 HTTPS 协议向目标网站发起请求,获取网页的 HTML 文档。

3.解析 HTML:爬虫程序使用网页解析库(如 BeautifulSoup、lxml)解析网页的 HTML 文档,提取出需要的数据。

4.处理数据:爬虫程序对获取到的数据进行处理和存储,例如将数据存储到数据库中或写入文件。

5.反爬措施:由于许多网站采取了反爬虫措施,爬虫程序需要进行相应的解决策略,例如设置 User-Agent 参数、使用代理和验证码识别等。

6.定时任务:如果是长期维护的爬虫,需要定期对目标网站进行监测和更新,确保数据的实时性和准确性。

常见的来源爬虫优缺点:

1. Scrapy框架

Scrapy是一个用Python编写的强大的爬虫框架,具有高速度、灵活性和易用性等特点。它支持各种网站和数据抓取,同时提供了许多有用的内置功能,例如调度、跟踪和过滤器等。此外,Scrapy还具有良好的文档和活跃的社区支持。但是,Scrapy也有一些缺点。首先,它只能在Python中使用,这限制了它的应用范围。其次,Scrapy的学习曲线相对较陡,需要花费一些时间来掌握。此外,Scrapy的代码相对较为冗长,因此对于需要快速上手的人来说可能不太适合。

2. Selenium框架

Selenium是一个自动化测试工具,可以模拟用户在浏览器中的行为。可以用于抓取动态网页和Web应用程序中的数据,同时提供了对JavaScript的支持。此外,Selenium还可以与多种编程语言(如Java、Python和C#等)进行集成。然而,Selenium也有一些缺点。首先,它只能模拟用户在浏览器中的行为,因此对于一些复杂的网站和应用程序可能无法完全准确地抓取数据。其次,Selenium启动浏览器和测试套件需要时间和资源,因此不适合大规模的并发请求。此外,Selenium的代码相对较为复杂,需要较高的技术水平才能掌握。

3. Beautiful Soup框架

Beautiful Soup是一个用于解析HTML和XML文档的Python库。它可以用于从网页中提取数据,同时提供了许多有用的搜索、修改和导航功能。此外,Beautiful Soup还具有良好的文档和广泛的应用支持。然而,Beautiful Soup也有一些缺点。首先,它只能处理静态网页,对于动态网页和Web应用程序可能无法完全准确地抓取数据。其次,Beautiful Soup的搜索功能不如XPath和CSS选择器强大,因此对于某些网站可能无法准确地提取数据。此外,Beautiful Soup的代码相对较为冗长,需要花费一些时间来掌握。

4. PyQuery框架

PyQuery是一个用Python编写的jQuery风格的库,可以用于解析HTML文档并对其进行查询和修改。它可以非常方便地抓取网页中的数据,并支持各种CSS选择器和AJAX等功能。此外,PyQuery还具有灵活性和可扩展性等特点,可以与多种Python库进行集成。然而,PyQuery也有一些缺点。首先,它只能处理静态网页,对于动态网页和Web应用程序可能无法完全准确地抓取数据。其次,PyQuery的功能相对较为简单,不如Scrapy和Beautiful Soup等专业爬虫框架强大。此外,PyQuery的文档和学习资源相对较少,需要花费一些时间来掌握。

5. scrapy-redis

Scrapy-Redis是Scrapy的一个扩展,它提供了基于Redis的分布式爬取能力。通过使用Redis作为共享存储,多个爬虫节点可以协同工作,共同处理爬取任务,从而提高了爬取效率和并发能力。Scrapy-Redis使用Redis作为任务调度器,它将待爬取的URL存储在Redis的队列中。由于Redis支持高效的数据结构和持久化存储,因此可以轻松地处理大规模数据,并实现URL的去重和任务分发。Scrapy-Redis将爬取到的数据存储在Redis中,这使得多个爬虫节点可以共享数据,避免了数据不一致和重复存储的问题。同时,Redis的高性能读写能力也提高了数据处理的效率。Scrapy-Redis作为Scrapy的扩展,提供了一套基于Redis的组件,如Redis调度器、Redis去重中间件等。这些组件与Scrapy的现有组件集成在一起,共同实现分布式爬取功能。然而,Scrapy-Redis也有一些缺点。在高并发环境下,Redis可能成为瓶颈,因为它需要处理大量的请求并保持数据的一致性。由于Redis是内存数据库,如果服务器宕机或重启,所有的爬取状态可能会丢失。由于所有的爬虫活动都在Redis中,调试和诊断问题可能会更加困难。与纯Python工具包相比,Scrapy-Redis需要额外的配置步骤。Redis是单线程的,因此在高并发下可能成为瓶颈。在分布式爬虫环境中,如果没有正确处理,可能会导致数据不一致。Scrapy-Redis不支持Scrapy的去重组件,需要额外的去重方案。

6. 基于 Python 的 Requests 库

Requests 是 Python 语言中一个流行的 HTTP 库,提供了多种HTTP请求方法,包括GET、POST、PUT、DELETE等,可以方便地发送请求并获得服务器响应。requests库支持设置请求头、Cookies、代理、超时等参数,还可以获取服务器返回的响应状态码、响应头和响应内容,以及处理响应的编码、JSON数据等。requests库可以创建会话对象,用于保持持久连接和共享Cookie等信息,以提高性能和效率。requests库可以方便地上传文件,也可以下载文件到本地,支持断点续传和流式传输。requests库支持SSL证书验证,可以处理HTTPS请求,并提供了方便的接口来管理证书和SSL选项。requests库可以通过设置代理来发送请求,以实现IP隐藏和反爬虫。但是,Requests 库也有一些局限性,例如:不支持 JavaScript 和 CSS,无法处理动态加载的内容。不能保持连接,不能在连接关闭时进行一些操作,例如在一个连接关闭时重试。不支持HTTP的CONNECT方法,不能通过HTTP代理服务器。不支持cookies的session持久性,每次请求都需要手动处理cookies。因此,如果需要爬取的网站使用了这些技术,使用 Requests 库就可能会遇到困难。

7. 基于 Node.js 的 Express 框架

Express 是 Node.js 语言中一个流行的 Web 应用框架,可以用于构建高性能的 Web 服务器。Express 框架具有高度灵活性和可扩展性,可以轻松地处理 HTTP 请求并返回响应内容。另外,Express 还支持中间件、路由、模板引擎等高级功能。但是,Express 框架主要适用于构建 Web 应用,对于爬虫而言可能会有些大材小用。此外,Node.js 中有些库和工具在处理 HTML 解析和爬虫方面并不是很成熟,需要额外的工作和代码量。

8. 基于 Node.js 的 Cheerio 库

Cheerio 是 Node.js 语言中一个流行的 HTML 解析库,可以用于解析和操作 HTML 文档。Cheerio 具有高效的 DOM 操作和解析速度,可以很方便地获取和提取 HTML 中的元素和数据。同时,Cheerio 还支持一些高级功能,例如:支持异步操作、可链式调用等。然而,Cheerio 的文档和社区支持相对较弱,需要一定的时间和经验才能熟练掌握。此外,Cheerio 的依赖项较多,可能会对项目造成一定的复杂性和维护难度。

9. Java爬虫

Java爬虫是一种常用的网络数据抓取工具,它能够自动化地从网页中提取和解析数据。Java语言天生支持多线程,可以使用多线程技术提高爬虫的并发能力,加快数据抓取速度。Java拥有丰富的第三方库和框架,如Jsoup、HttpClient等,可以方便地进行HTML解析、HTTP请求、Cookie管理等操作,简化了爬虫的开发过程。Java具有强大的网络编程功能,可以处理网络连接、数据传输等复杂的网络操作,并提供了Socket和URL等类库,方便进行网络数据的抓取和处理。Java是一种跨平台的编程语言,可以在不同操作系统上运行,因此Java爬虫具有良好的可移植性。Java是一种类型安全的编程语言,拥有严格的异常处理机制,可以有效地避免程序崩溃或执行错误。但是,Java爬虫也有一些缺点。相对于其他语言,Java的学习曲线较为陡峭,需要掌握较多的语法和相关知识才能进行爬虫开发。由于Java是一种解释型语言,相比于编译型语言,它的执行速度较慢。在大规模数据抓取的场景下,可能会面临性能瓶颈。虽然Java拥有丰富的第三方库和框架,但相对于其他语言如Python来说,Java在爬虫领域的可扩展性相对较低。一些网站为了防止爬虫的访问,会采取一些反爬虫策略,例如各种封禁等。而Java的代理、验证码识别等功能的实现相对复杂,对于一些需要频繁变更IP的场景来说,可能会遇到困难。一些网页使用JavaScript动态生成内容,对于这类网页,Java爬虫的HTML解析能力相对有限,很难获取到完整的数据。

10. Nutch

ApacheNutch是一个高度可扩展的和可伸缩的开源网页爬虫软件项目。源于ApacheLuceneTM,项目多样化,Nutch支持分布式抓取,并有Hadoop支持,可以进行多机分布抓取,存储和索引。另外很吸引人的一点在于,它提供了一种插件框架,使得其对各种网页内容的解析、各种数据的采集、查询、集群、过滤等功能能够方便的进行扩展,正是由于有此框架,使得 Nutch 的插件开发非常容易,第三方的插件也层出不穷,极大的增强了 Nutch 的功能和声誉。但是,Nutch也有一些缺点。Nutch的抓取策略虽然灵活,但在实际应用中需要根据具体的需求进行优化,避免出现重复抓取和漏抓的情况。Nutch的分布式架构需要依赖于其他组件(如Hadoop),在配置和管理方面需要花费一定的精力。虽然Nutch在小规模数据上有良好的表现,但在处理大规模数据时,性能有所下降,需要进一步优化。

11. Pyspider

Pyspider提供了直观的可视化界面,使得爬虫任务的管理和调试变得简单方便。使用Pyspider,您可以使用Python编写简洁、可读性强的爬虫代码。Pyspider支持分布式爬取,能够提高爬虫任务的效率和速度。但是,Nutch也有一些缺点。对于新手来说,Pyspider可能需要一定时间来适应其使用方法和概念。由于Pyspider使用的是Python解释器,其可扩展性受到Python的限制。

12. Crawley

简单易学,能高速爬取对应网站内容,可将爬取到内容轻松存到数据库中,比如:postgres,mysql,oracle,sqlite等数据库。可以将爬取到的数据导出为json,xml等格式,支持非关系型数据库,比如:mongodb,couchdb等。支持使用命令行工具,可以使用你喜欢的工具提取数据,比如使用xpath或者pyquery等工具,支持使用cookie登陆并访问哪些只有登陆才能够访问的网页。但是,Crawley也有一些缺点。不支持动态网页抓取,例如网页的ajax部分。不支持分布式采集,可以考虑将其作为分布式爬虫的一部分,客户端采集部分。

13. Portia

Portia的优点包括其强大的功能和灵活性,‌能够满足各种需求,‌并且具有较好的稳定性和安全性。‌此外,‌Portia还具有易于使用的界面和强大的社区支持,‌使得用户能够轻松上手并获得帮助。‌然而,‌Portia也存在一些缺点。‌首先,‌它可能对一些特定的高级功能或定制需求支持不够,‌这可能会限制其在某些特定场景下的应用。‌此外,‌虽然Portia在许多方面表现出色,‌但在某些特定性能上可能还有提升的空间。‌

14. Grab

Grab提供了简洁、直观的API,使得编写爬虫代码变得容易。你可以快速设置请求参数、发送请求并处理响应,而无需过多的复杂配置。Grab内置了强大的文档解析器,可以使用CSS选择器或XPath来解析HTML文档。这使得提取所需数据变得简单,无需额外的第三方库或复杂的解析代码。Grab支持多线程和进程池,可以并发地发送请求,提高爬取速度。这对于需要处理大量页面或需要快速爬取的任务非常有用。它在处理大型、‌复杂的爬虫项目上可能稍显不足,‌但对于小型或中型的爬虫任务,‌Grab的简洁和易用性无疑是一大优势。‌

15. Newspaper

‌Newspaper库提供了一个简单而高效的方式来抓取新闻网页,‌即使是完全没有爬虫经验的初学者也能快速上手。‌它自动下载网页内容并进行解析,‌无需用户考虑复杂的header、‌IP代理、‌网页解析和网页源代码架构等问题,‌大大简化了爬虫的开发过程。‌除了基本的文章文本提取外,‌Newspaper还能自动识别并提取出文章的作者、‌发布日期等关键信息。‌它支持多种语言,‌包括英语、‌中文、‌德语、‌阿拉伯语等,‌适应不同国家和地区的新闻网站。‌此外,‌它支持多进程文章下载,‌可以同时处理多个网页,‌大大提高了数据抓取的效率。‌‌Newspaper能识别新闻链接,‌并从HTML文件中提取文本、‌图片等多媒体内容,‌为用户提供更全面的新闻信息。虽然Newspaper库简化了爬虫的开发过程,‌但它也依赖于外部服务来处理一些复杂的网页解析任务。‌这可能在某些情况下限制了其独立使用的能力。‌‌尽管Newspaper特别适用于抓取新闻类网页,‌因为它能处理较为规范的HTML结构和内容格式,‌但在抓取非新闻类网站时可能效果不佳。‌

16. Mechanize

可以处理重定向、cookie等,像真实用户一样与网页交互。方便快速地填写和提交网页表单。相比Selenium,Mechanize更轻量级,使用起来更简单。可以处理复杂的HTTP操作,如设置User-Agent、cookie、header等。不容易处理Ajax和DHTML。但不支持并发请求,对JavaScript的支持有限。不容易处理需要CAPTCHA的情况,不适合进行高并发请求,对应网站的反爬机制较为脆弱,容易被识别为爬虫而被封禁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/458009.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中小型门诊管理系统源码,云诊所管理系统源码,前端技术栈:Vue 2 , Vite , Vue Router 3

中小型门诊管理系统源码&#xff0c;云诊所管理系统源码&#xff0c; 前端技术栈&#xff1a;Vue 2 Vite Vue Router 3 Vuex 3 Element Plus Axios TypeScript Quill Election 后端技术栈&#xff1a;Spring Boot MyBatis MyBatis-Plus Spring Security Swagger2 …

使用Python计算相对强弱指数(RSI)进阶

使用Python计算相对强弱指数&#xff08;RSI&#xff09;进阶 废话不多说&#xff0c;直接上主题&#xff1a;> 代码实现 以下是实现RSI计算的完整代码&#xff1a; # 创建一个DataFramedata {DATE: date_list, # 日期CLOSE: close_px_list, # 收盘价格 }df pd.DataF…

基于丑萌气质狗--C#的sqlserver学习

#region 常用取值 查询List<string> isName new List<string> { "第一", "第二", "第三", "第四" }; List<string> result isName.Where(m > m "第三").ToList();MyDBContext myDBnew MyDBContext(…

【数据分享】中国汽车市场年鉴(2013-2023)

数据介绍 在这十年里&#xff0c;中国自主品牌汽车迅速崛起。吉利、长城、比亚迪等品牌不断推出具有竞争力的车型&#xff0c;在国内市场乃至全球市场都占据了一席之地。同时&#xff0c;新能源汽车的发展更是如日中天。随着环保意识的提高和政策的大力支持&#xff0c;电动汽车…

CSS伪元素以及伪类和CSS特性

伪元素&#xff1a;可以理解为假标签。 有2个伪元素 &#xff08;1&#xff09;::before &#xff08;2&#xff09;::after ::before <!DOCTYPE html> <html> <head><title></title><style type"text/css">body::before{con…

Android简单控件实现简易计算器

学了一些Android的简单控件&#xff0c;用这些布局和控件&#xff0c;设计并实现一个简单计算器。 计算器的界面分为两大部分&#xff0c;第一部分是上方的计算表达式&#xff0c;既包括用户的按键输入&#xff0c;也包括计算结果 数字&#xff1b;第二部分是下方的各个按键&a…

【redis】初识非关系型数据库——redis

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 初识 Redis Redis是⼀种基于键值对&#xff08;key-value&#xff09;的NoSQL数据库&#xff0c;与很多键值对数据库不同的是&#xff0c;Redis 中的值可以是由string&#xff08;字符串&#xff09;、hash&#xff0…

基于协同过滤算法的个性化课程推荐系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

AndroidStudio部署多渠道打包环境(一)

对于游戏来说&#xff0c;需要上架国内很多家应用商店&#xff0c;还有一些小的渠道SDK&#xff0c;大大小小加起来也有几十家了&#xff0c;那么我们部署了多渠道打包环境之后就很方便了。 一 、配置游戏基本参数&#xff1a;在app下面的build.gradle文件里编辑&#xff0c; …

Java全栈经典面试题剖析4】JavaSE高级 -- 包装类,String, 类方法

目录 面试题3.1 什么是自动装箱与拆箱&#xff1f;用什么方式来装箱与拆箱&#xff1f; 面试题3.2 int和Integer有什么区别&#xff1f; 面试题3.3 Integer常量池 面试题3.4 字符串常量池 面试题3.5 这句代码创建了几个对象? String str1 new String("xyz");…

【AI大模型】深入解析 存储和展示地理数据(.kmz)文件格式:结构、应用与项目实战

文章目录 1. 引言2. 什么是 .kmz 文件&#xff1f;2.1 .kmz 文件的定义与用途2.2 .kmz 与 .kml 的关系2.3 常见的 .kmz 文件使用场景 3. .kmz 文件的内部结构3.1 .kmz 文件的压缩格式3.2 解压缩 .kmz 文件的方法3.3 .kmz 文件的典型内容3.4 .kml 文件的结构与主要元素介绍 4. 深…

python对文件的读写操作

任务:读取文件夹下的批量txt数据&#xff0c;并将其写入到对应的word文档中。 txt文件中包含&#xff1a;编号、报告内容和表格数据。写入到word当中&#xff1a;编号、报告内容、表格数据、人格雷达图以及对应的详细说明&#xff08;详细说明是根据表格中的标识那一列中的加号…

安徽对口高考Python试题选:输入一个正整数,然后输出该整数的3的幂数相加形式。

第一步&#xff1a;求出3的最高次幂是多少 guoint(input("请输入一个正整数:")) iguo a0 while i>0: if 3**i<guo: ai break ii-1print(a)#此语句为了看懂题目&#xff0c;题目中不需要打印出最高幂数 第二步…

开源模型应用落地-Qwen2-VL-7B-Instruct-vLLM-OpenAI API Client调用

一、前言 学习Qwen2-VL &#xff0c;为我们打开了一扇通往先进人工智能技术的大门。让我们能够深入了解当今最前沿的视觉语言模型的工作原理和强大能力。这不仅拓宽了我们的知识视野&#xff0c;更让我们站在科技发展的潮头&#xff0c;紧跟时代的步伐。 Qwen2-VL 具有卓越的图…

ELK日志收集

目前&#xff0c;各个微服务系统的日志都保存在各自指定的目录中&#xff0c;如果这些微服务部署在不同的服务器上&#xff0c;那么日志文件也是分散在各自的服务器上。分散的日志不利于我们快速通过日志定位问题&#xff0c;我们可以借助ELK来收集各个微服务系统的日志并集中展…

智能台灯设计(一)原理图设计

1. 前言 作者最近突发奇想&#xff0c;想自己做一个小台灯&#xff0c;设想的功能有&#xff1a;带锂电池可充电、可以调节亮度&#xff0c;后续通过增加WIFI模块实现手机控制开关功能。目前先实现最简单的功能&#xff0c;有时间再一步步完善吧。 2. 原理图设计 充电芯片使用…

B端产品常用组件及设计规则 原型图 Axure原型图 交互设计

B端产品常用组件及设计规则 本作品总结整理了B端产品原型设计时常用的组件、设计指南、常用模板等。为原型设计人员提供实用的组件和指南&#xff0c;帮助他们快速灵活地构建出更加美观、高质量的产品原型&#xff0c;更加高效地完成原型设计工作。 原型演示地址&#xff1a;…

【笔记】软件测试09——接口测试

九、接口测试 一)接口测试的概念 1)接口测试 通过数据包的方式观察客户端向服务器发送了什么请求,模拟这些请求的过程 接口测试是测试系统组件间数据交互的一种方式。 接口测试是通过测试不同情况下的输入参数和与之对应的输出结果来判断接口是否符合或满足相应 的功能性、…

鸿蒙原生应用开发及部署:首选华为云,开启HarmonyOS NEXT App新纪元

目录 前言 HarmonyOS NEXT&#xff1a;下一代操作系统的愿景 1、核心特性和优势 2、如何推动应用生态的发展 3、对开发者和用户的影响 华为云服务在鸿蒙原生应用开发中的作用 1、华为云ECS C系列实例 &#xff08;1&#xff09;全维度性能升级 &#xff08;2&#xff…

人工智能进程;算子加速的具体计算部分;大模型GPT5:参数18万亿;大模型面临问题

目录 人工智能进程 算子加速的简单理解,举例说明 一、简单理解 二、举例说明 一、算子加速的具体计算部分 二、举例说明 三、算子加速是否仅针对GPU 大模型GPT5:参数18万亿 大模型面临问题 算力集群设计框架 人工智能进程