来源爬虫程序调研报告

news2024/10/27 21:57:06

来源爬虫程序调研报告

一、什么是爬虫

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

二、网络爬虫的组成

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

图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.coloradmin.cn/o/2224957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

植物健康,Spring Boot来保障

5系统详细实现 5.1 系统首页 植物健康系统需要登录才可以看到首页。具体界面的展示如图5.1所示。 图5.1 系统首页界面 5.2 咨询专家 可以在咨询专家栏目发布消息。具体界面如图5.2所示。 图5.2 咨询专家界面 5.3 普通植物检查登记 普通员工可以对普通植物检查登记信息进行添…

07 设计模式-结构型模式-桥接模式

桥接&#xff08;Bridge&#xff09;是用于把抽象化与实现化解耦&#xff0c;使得二者可以独立变化。这种类型的设计模式属于结构型模式&#xff0c;它通过提供抽象化和实现化之间的桥接结构&#xff0c;来实现二者的解耦。 这种模式涉及到一个作为桥接的接口&#xff0c;使得…

入门 | Prometheus+Grafana 普罗米修斯

#1024程序员节&#xff5c;征文# 一、prometheus介绍 1、监控系统组成 一个完整的监控系统需要包括如下功能&#xff1a;数据产生、数据采集、数据存储、数据处理、数据展示、分析、告警等。 &#xff08;1&#xff09;、数据来源 数据来源&#xff0c;也就是需要监控的数据…

VS Code 自动生成代码

1. 在vs code中的左下角&#xff0c;点击设置中的snippets。 2. 输入你需要生成的代码种类&#xff0c;这边以JS为例 打开后可以看到下面这样 从Example看起&#xff0c; 1.Print to console 这个是提升信息&#xff0c;就是当你输入代码的时候的提升。 2.prefix是缩写。 3.b…

python爬虫——Selenium的基本使用

目录 一、Selenium的介绍 二、环境准备 1.安装Selenium 2.安装WebDriver 三、元素定位 1.常用定位元素的方法 2. 通过指定方式定位元素 四、窗口操作 1.最大化浏览器窗口 2.设置浏览器窗口大小 3.切换窗口或标签页 切换回主窗口 4. 关闭窗口 关闭当前窗口 关闭所…

由于找不到mfc140u.dll,无法继续执行代码怎么办,总有6个解决方法

在软件开发和程序运行过程中&#xff0c;许多用户可能会遇到“找不到mfc140u.dll&#xff0c;无法继续执行代码”的问题。本文将对该问题进行详细解读&#xff0c;分析其产生原因&#xff0c;并提供相应的解决方案。 一、mfc140u.dll是什么 mfc140u.dll是Microsoft Visual C 2…

apache poi导出excel

简介 常见的使用场景 入门 导入maven依赖 <!-- poi --> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId> </dependency> <dependency><groupId>org.apache.poi</groupId><arti…

Java Web项目实战:从零基础到项目开发全流程

Java Web开发环境搭建 Java Web开发需要Java运行环境、IDE&#xff08;如IntelliJ IDEA或Eclipse&#xff09;以及Maven集成开发工具等。首先&#xff0c;确保电脑上安装有Java 8或更高版本&#xff0c;可以通过访问Java官网获取最新版本。其次&#xff0c;安装IDE&#xff0c…

jupyter notebook改变默认启动路径

安装好Anaconda 3以后&#xff0c;就可以使用Jupyter notebook了&#xff0c;但是我们打开Jupyter notebook后&#xff0c;发现界面是一个默认的目录&#xff0c;这个目录在哪里&#xff1f;如果想把自己写的程序文件保存在自己新建的一个文件夹里&#xff0c;修改默认目录到自…

vue elementui el-table实现增加行,行内编辑修改

需求&#xff1a; 前端进行新增表单时&#xff0c;同时增加表单的明细数据。明细数据部分&#xff0c;可进行行编辑。 效果图&#xff1a; <el-card><div slot"header"><span style"font-weight: bold">外来人员名单2</span><…

MySQL8.0.40编译安装

近期MySQL发布了8.0.40版本&#xff0c;与之前的版本相比&#xff0c;部分依赖包发生了变化&#xff0c;因此重新编译一版&#xff0c;也便于大家参考。 1. 下载源码 选择对应的版本、选择源码、操作系统 如果没有登录或者没有MySQL官网账号&#xff0c;可以选择只下载 2. 进…

Flutter仿京东商城APP实战 用户中心基础布局

用户中心界面 pages/tabs/user/user.dart import package:flutter/material.dart; import package:jdshop/utils/zdp_screen.dart; import package:provider/provider.dart;import ../../../store/counter_store.dart;class UserPage extends StatefulWidget {const UserPage…

自动化部署-02-jenkins部署微服务

文章目录 前言一、配置SSH-KEY1.1 操作jenkins所在服务器1.2 操作github1.3 验证 二、服务器安装git三、jenkins页面安装maven四、页面配置自动化任务4.1 新建任务4.2 选择4.3 配置参数4.4 配置脚本 五、执行任务5.1 点击执行按钮5.2 填写参数5.3 查看日志 六、查看服务器文件七…

qt QOperatingSystemVersion详解

QOperatingSystemVersion 是 Qt 提供的一个类&#xff0c;用于表示和管理操作系统的版本信息。它允许开发者获取操作系统的名称、版本号和平台信息。这个类对于需要根据操作系统版本执行特定操作的应用程序尤其有用。 1. 构造函数 QOperatingSystemVersion(): 默认构造函数&…

mysql中的视图表

视图&#xff08;View&#xff09;是数据库中的一种对象&#xff0c;它是基于 SQL 语句的结果集的可视化的表。视图包含行和列&#xff0c;类似于一个真实的表&#xff0c;但它并不在数据库中以存储的数据值集形式存在。视图的内容由查询定义&#xff0c;可以来自单个表或多个表…

docker 镜像详解

Docker镜像是一种轻量级、可移植的软件打包格式&#xff0c;它包含了运行应用程序所需的一切&#xff0c;是构建和分发应用程序的基础。以下是对Docker镜像的详细解释&#xff1a; 一、镜像的定义 镜像本质上是一个只读文件&#xff0c;包含了文件系统、源码、库文件、依赖、…

openpnp - 解决“底部相机高级校正成功后, 开机归零时,吸嘴自动校验失败的问题“

文章目录 openpnp - 解决"底部相机高级校正成功后, 开机归零时&#xff0c;吸嘴自动校验失败的问题"概述笔记问题现象1问题现象2原因分析现在底部相机和吸嘴的位置偏差记录修正底部相机位置现在再看看NT1在底部相机中的位置开机归零&#xff0c;看看是否能通过所有校…

ubuntu进程相关操作

进程相关操作 1.查看进程top/htop top 命令输出解释 在 top 命令中&#xff0c;字段通常表示如下&#xff1a; USER&#xff1a;进程的所有者。PR&#xff1a;优先级。NI&#xff1a;nice 值&#xff08;优先级调整&#xff09;。VIRT&#xff1a;进程使用的虚拟内存总量。…

深度解析百度搜索引擎点击结果:如何提高网站曝光率和用户满意度

在互联网时代&#xff0c;搜索引擎已成为广大网民获取信息的重要途径。作为国内领先的搜索引擎&#xff0c;百度拥有庞大的用户群体。本文将为您分析百度搜索引擎点击搜索结果&#xff0c;助您提高网站曝光率和用户满意度。 一、百度搜索引擎点击搜索结果的重要性 提高网站曝…

jsMind:炸裂项目,用JavaScript构建的思维导图库,GitHub上的热门开源项目

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和工作学习方法 jsMind 是一个基于 JavaScript 的思维导图库&#xff0c;它利用 HTML5 Canvas 和 SVG 技术构建&#xff0c;可以轻松地在网页中嵌入和编辑思维导图。它以 …