详解爬虫基本知识及入门案列(爬取豆瓣电影《热辣滚烫》的短评 详细讲解代码实现)

目录

前言什么是爬虫?

爬虫与反爬虫基础知识

一、网页基础知识

 二、网络传输协议

HTTP(HyperText Transfer Protocol)和HTTPS(HTTP Secure)请求过程的原理?

三、Session和Cookies

Session

Cookies

Session与Cookies的区别与联系

 四、Web服务器Nginx

五、代理IP

1、代理IP的原理

2. 分类

3. 获取途径

入门案列

爬虫步骤及思路:

主要步骤: 

完整代码 

总结


博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有需要可以联系作者我哦!

🍅文末三连哦🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

前言
什么是爬虫?

爬虫,也称为网页蜘蛛或网络机器人,是一种按照既定规则,在网络上自动爬取信息的程序或脚本。它模拟人操作客户端(如浏览器或APP)向服务器发起网络请求,以抓取所需的数据。爬虫的工作原理主要包括网页请求、数据解析和数据存储等步骤。

首先,爬虫需要确定要爬取的目标网址,并向目标网站发送HTTP请求获取网页的内容。在发送请求之前,爬虫可以选择合适的请求方法(如GET或POST),并可以设置请求头部信息以模拟浏览器的请求,避免被网站的反爬虫机制拦截。

其次,爬虫需要对获取到的网页内容进行解析。网页通常使用HTML、XML或JSON等标记语言编写,爬虫需要根据网页的结构和规则,提取出所需的数据。在解析过程中,爬虫还可以进行数据清洗和处理,以获取更加干净和规范的数据。

最后,爬虫将解析后的数据进行存储,供后续使用和分析。

爬虫与反爬虫基础知识

在正式学习爬虫知识之前,我们需要了解掌握相关的知识及概念,如浏览器前端页面知识、网络传输协议、Web服务器Nginx、代理IP、HTTP接口概念、Session和Cookie等。通过了解这些概念,我们可以更好地掌握爬虫基本原理,同时学会如何使用爬虫来收集和分析市场数据、社交媒体数据、新闻等信息,以做出更明智的商业和战略决策。

一、网页基础知识

如淘宝页面涉及的知识结构:

淘宝首页源代码: 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="data-spm" content="a2638t"/>
    <meta name="keywords" content=""/>
    <meta name="description" content=""/>
    

    <title>阿里巴巴1688.com - 全球领先的采购批发平台,批发网</title>

    <!-- 引用样式 -->
    <link rel="stylesheet" href="//gw.alipayobjects.com/os/lib/alifd/next/1.19.24/dist/next.min.css"/>
    <link rel="stylesheet" type="text/css" href="https://sucai.alicdn.com/boot-build-page-prod/71-59942-index.css"/>

    <script type="text/javascript" data-sc-pos="head" src="//g.alicdn.com/mtb/lib-mtop/2.4.2/mtop.js"></script>
    <script src="//g.alicdn.com/assets-group/jplus/0.0.11/index.js" crossorigin></script>
    <script src="//g.alicdn.com/assets-group/cbu-splus/0.1.0/index.js" crossorigin></script>

    <script>
        var jplusUtil = window.jplusUtil;
        var setConfig = jplusUtil && jplusUtil.setConfig;
        var renderAsync = true;
        setConfig('exp', {
            config: {
                selector: '.offer',
                visible: '0.01',
                duration: '1',
                propsMap: {
                    url: 'data-jplus-exp-url'
                }
            }
        })
                        var browserRenderData = {}; //渲染用数据
            
                        var urlParams = {"cosite":"360jj","exp":"zgc_tab:A;offerWwClick:A","hpageId":"krump-2125","keywords":"淘宝网首页","location":"landing_t4","p4pid":"c28241d4dafe1","pageNo":1,"pageSize":20,"pageUrl":"https://p4psearch.1688.com/page.html?keywordid=52595543980&cosite=360jj&keywords=%E6%B7%98%E5%AE%9D%E7%BD%91%E9%A6%96%E9%A1%B5&trackid=88576672928645988612270&location=landing_t4&ptid=hr40f198ac2e9981&exp=zgc_tab%3AA%3BofferWwClick%3AA&hpageId=krump-2125&bd_vid=e9f3037c3e6f91d0","platform":"PC","ptid":"hr40f198ac2e9981","pvType":"COMMON","se":"","ssr":false,"trackid":"88576672928645988612270"}
            
    </script>

</head>
<body data-bu="1688" data-spm="b_78128457"><script>
with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("exparams","category=&aplus&asid=AQAAAABSEh5mCpDDLwAAAABaIrI1no31Rg==&aat=&abb=&ret=ali%5fresin%5ftrace%3dc%5fp4pid%3dc28241d4dafe1%7cc%5fbid%3d2%2d5%2d6%2d268%2dkrump%2d2125%2d2601%7c202403311%7cc%5froute%3d1&c_signed=&hn=p4p%2dlp033044050177%2ecenter%2ena620&at_bu=cbu",id="beacon-aplus",src="//g.alicdn.com/alilog/??/aplus_plugin_b2bfront/index.js,mlog/aplus_v2.js")
</script>
<div id="app"></div>

<!-- 引用页面 JS -->
<script src="https://sucai.alicdn.com/boot-build-page-prod/71-59942-index.js"></script>

<!-- 性能监控与异常打点 -->
<script>
    var g_config = window.g_config || {};
    g_config.jstracker2 = g_config.jstracker2 || {};
    g_config.jstracker2.pid = '25687-tracker';
</script>

<script src="//g.alicdn.com/tb/tracker/index.js"></script>

</body>
</html>

通过代码可以知识网页主要由HTML、CSS和JS三个部份组成。其作用:

  1. HTML与网页结构
    • HTML(HyperText Markup Language,超文本标记语言):是构建网页的标准标记语言。它定义了网页的结构和内容,通过标签(tags)来标记文本、图片、链接等各种元素。爬虫需要了解HTML标签和它们的用途,以便能够正确地解析网页并提取所需信息。
  2. CSS与网页样式
    • CSS(Cascading Style Sheets,层叠样式表):用于描述网页的样式,如颜色、字体、布局等。虽然爬虫主要关注网页的内容,但了解CSS有助于更好地识别和处理网页元素,特别是在处理动态加载或隐藏的内容时。
  3. JavaScript与网页交互
    • JavaScript:是一种用于网页交互的脚本语言。现代网页中,很多内容是通过JavaScript动态生成的,或者需要通过JavaScript交互来展示。爬虫需要能够处理JavaScript代码,以便获取这些动态生成的内容。有些高级爬虫会使用无头浏览器(headless browsers)来执行JavaScript并渲染网页。

 二、网络传输协议

网络传输协议是指在计算机网络中为了使不同的计算机之间能够传输数据而制定的一种约定。它是计算机网络的基础,是实现计算机数据传输和信息交换的重要手段。在网络传输协议中,通信双方需要达成共识,以确定数据传输的格式、数据包大小、传输速率、数据校验等参数,以保证数据传输的可靠性、安全性和高效性。常见的传输协议:

TCP/IP (Transmission Control Protocol/Internet Protocol):

  • TCP (Transmission Control Protocol): TCP是一种面向连接的协议,提供可靠的数据传输服务。它通过三次握手建立连接,确保数据按顺序、完整地传输到目标地址。TCP还负责流量控制和拥塞控制。
  • IP (Internet Protocol): IP是一种数据包交换的协议,它负责定义数据包的格式和发送到目标地址的方式。IP地址用于唯一标识网络上的设备。

UDP (User Datagram Protocol):

  • UDP是一种无连接的协议,不保证数据传输的可靠性和顺序。它比TCP快速,适用于一些对实时性要求较高的应用,如视频流和语音通话。

HTTP/HTTPS (HyperText Transfer Protocol/Secure):

  • HTTP: HTTP是一种应用层协议,用于从网络服务器传输超文本到本地浏览器。它是无状态的,每个请求独立处理,常用于网页浏览。
  • HTTPS: HTTPS是HTTP的安全版本,使用SSL/TLS加密数据传输,提供数据的机密性和完整性。它在电子商务、在线银行等需要安全传输数据的场景中广泛应用。

FTP (File Transfer Protocol):

  • FTP是用于在计算机之间传输文件的协议。它支持上传、下载和管理文件,通常用于网站维护、文件备份等。

SMTP (Simple Mail Transfer Protocol):

  • SMTP是用于电子邮件发送的协议。它定义了邮件如何从发送者的电子邮件服务器传输到接收者的电子邮件服务器。

HTTP(HyperText Transfer Protocol)和HTTPS(HTTP Secure)请求过程的原理?

其是应用层协议,主要用于在客户端和服务器之间传输超文本内容。它们的请求过程有一定的相似性,但HTTPS在传输层使用了SSL/TLS加密来增加安全性。下面我们详细讲解HTTP/HTTPS的请求过程:

HTTP请求过程:

  1. 建立连接

    • 客户端(通常是浏览器)向服务器发起一个TCP连接,通常在端口80。
    • 三次握手完成后,TCP连接建立。
  2. 发送请求

    • 客户端发送一个HTTP请求到服务器,请求包括HTTP方法(如GET、POST)、URL、HTTP版本、请求头(如User-Agent、Accept等)和可选的请求体(如POST数据)。
  3. 服务器处理请求

    • 服务器接收到请求后,解析HTTP方法、URL和头部信息。
    • 根据请求的内容,服务器执行相应的操作,可能是查询数据库、读取文件或执行其他业务逻辑。
  4. 发送响应

    • 服务器将处理结果封装成HTTP响应,响应包括HTTP版本、状态码、响应头(如Content-Type、Server等)和响应体(如HTML页面、JSON数据等)。
    • 服务器通过TCP连接将响应发送回客户端。
  5. 关闭连接

    • 一旦响应发送完成,TCP连接可能会立即关闭(短连接),也可能会保持一段时间以供后续请求使用(长连接)。

HTTPS请求过程:

HTTPS在HTTP的基础上增加了SSL/TLS加密来保护数据的机密性和完整性。以下是HTTPS请求过程的详细步骤:

  1. 建立连接

    • 客户端发起一个TCP连接到服务器的443端口。
    • TCP连接建立后,客户端和服务器之间开始SSL/TLS握手过程。
  2. SSL/TLS握手

    • 客户端发送一个SSL/TLS客户端Hello消息,包括支持的加密算法、随机数等。
    • 服务器回应一个SSL/TLS服务器Hello消息,选择一个加密算法、发送证书等。
    • 客户端验证服务器的证书,然后生成会话密钥。
    • 客户端使用服务器的公钥加密会话密钥,并发送给服务器。
    • 服务器使用私钥解密会话密钥,双方都获取了会话密钥用于后续通信。
  3. 发送加密请求

    • 客户端使用会话密钥加密HTTP请求,生成一个加密的HTTP请求。
    • 加密后的请求通过TCP连接发送到服务器。
  4. 服务器解密请求

    • 服务器使用会话密钥解密收到的HTTP请求。
    • 服务器处理解密后的请求,生成HTTP响应。
  5. 发送加密响应

    • 服务器使用会话密钥加密HTTP响应。
    • 加密后的响应通过TCP连接发送回客户端。
  6. 关闭连接

    • 加密的HTTP响应发送完成后,TCP连接可能会关闭或保持开放。

淘宝网页请求返回数据:

三、Session和Cookies

Session和Cookies是Web开发中常用的两种技术,用于在用户与服务器之间维护状态和数据。下面将详细解释Session和Cookies的概念、原理、使用场景以及它们之间的区别与联系。

Session

Session(服务端会话跟踪技术)是指在一个特定时间段内,单个客户端与Web服务器之间的一系列交互过程。在这个过程中,服务器会为每一个会话分配一个唯一的Session对象,用于存储与该会话相关的数据。Session数据保存在服务器端,因此相对于客户端存储的Cookies来说,Session数据更加安全,不易被窃取或截获。

Session的工作流程如下:

  1. 当客户端首次访问服务器时,服务器会创建一个新的Session对象,并为其分配一个唯一的Session ID。
  2. 服务器会将这个Session ID以某种方式(如响应报文或重写URL)发送给客户端,客户端会将其保存在本地(通常是保存在浏览器的内存中)。
  3. 在后续的请求中,客户端会将这个Session ID发送给服务器,以便服务器能够识别出当前会话并获取到对应的Session对象。
  4. 通过这个Session对象,服务器可以在多次请求之间共享数据,实现用户状态的维护。

Cookies

Cookies是一种小型文本文件,由服务器发送到客户端并保存在客户端的本地终端上。这些文件通常经过加密,用于存储用户信息,以便在后续的请求中进行识别和跟踪。Cookies的主要作用是帮助网站记住用户的状态和偏好,以便提供更加个性化的服务。

Cookies的工作原理如下:

  1. 当客户端首次访问服务器时,服务器会创建一个包含用户信息的Cookies对象,并将其发送给客户端。
  2. 客户端收到Cookies后,会将其保存在本地(如浏览器的Cookie缓存中)。
  3. 在后续的请求中,客户端会自动将保存在本地的Cookies发送给服务器。
  4. 服务器通过解析这些Cookies,可以获取到用户的身份信息和其他相关数据,从而进行相应的处理。

Session与Cookies的区别与联系

存储位置:一般Session数据存储在服务器端,而Cookies数据存储在客户端

数据安全性:由于Session数据存储在服务器端,因此相比于客户端存储的Cookies数据来说更加安全。而Cookies数据容易被窃取或截获,存在安全隐患。

数据大小与数量限制:Session在理论上没有大小限制,只受限于服务器的内存大小。而Cookies有大小限制以及浏览器在存储Cookies的数量上也有限制。

使用场景:Session通常用于存储重要的用户信息或会话数据,而Cookies则更多地用于存储用户的偏好设置、登录状态等轻量级数据。

 四、Web服务器Nginx

Web服务器Nginx是一款高性能的HTTP和反向代理服务器,具有高并发、轻量级、模块化、异步非阻塞的事件驱动模型等优点而广受好评。

Nginx最初由俄罗斯人伊戈尔·赛索耶夫为Rambler.ru站点开发,并于2004年首次公开发布。在中国大陆,很多知名网站如百度、京东、新浪、网易、腾讯、淘宝等都是使用Nginx作为Web服务器。

Nginx的主要特点包括:

  1. 高并发、高性能:Nginx能够处理大量并发连接,支持高达50,000个并发连接数,并经受高负载的考验。其吞吐量比传统的Web服务器高很多倍,使得它非常适合高流量、高负载的网站和应用。
  2. 轻量级:Nginx的代码精简,功能简洁,占用资源少,启动和运行速度快。同时,其分布式架构和优秀的容错机制使得Nginx在服务器出现故障时能够自动切换到备份服务器,保证服务的连续性和稳定性。
  3. 模块化:Nginx的模块化架构使得它的扩展性非常好,支持多种模块和插件,可以通过添加模块和插件来实现更多的功能。
  4. 异步非阻塞的事件驱动模型:与Node.js相似,Nginx使用异步非阻塞的事件驱动模型来处理请求,这使得它能够高效地处理大量并发连接。
  5. 高可靠性:Nginx支持热部署,启动简单,可以做到7*24不间断运行。此外,它的架构是分布式的,可以通过多个节点实现负载均衡,提高系统的可靠性和可用性。

Nginx在Web服务中扮演了多个重要角色:

  1. 静态资源服务:Nginx可以作为静态资源服务器,提供图片、视频、CSS、JS等静态资源的访问服务。
  2. 反向代理服务:Nginx可以作为反向代理服务器,将客户端请求转发到后端服务器,并缓存请求结果以提高性能。同时,它支持多种负载均衡策略,如轮询、加权轮询和IP hash等,可以根据需要选择合适的策略来分发请求。
  3. API服务:Nginx可以与OpenResty等框架结合,提供API服务。

此外,Nginx还具有良好的配置性和安全性。其配置文件简单易懂,方便管理员进行配置和管理。同时,Nginx可以通过限制访问IP、防止DDoS等多种方式来保护服务器的安全。

五、代理IP

1、代理IP的原理

代理IP的工作原理基于代理服务器。当A机用户电脑通过代理服务器C机发送请求时,代理服务器会代表用户向目标服务器B机发送请求,然后将目标服务器B机的响应返回给用户。这样,目标服务器B机只能看到代理服务器C机的IP地址,而不知道真实的用户IP地址。

IP代理原理图:

2. 分类

根据代理IP的类型和使用场景,代理IP可以分为以下几类:

  • HTTP代理:主要用于HTTP协议的代理,适用于网页浏览等。

  • HTTPS代理:专用于HTTPS协议的代理,支持SSL加密的网站访问。

  • SOCKS代理:支持多种协议的代理,包括HTTP、HTTPS和FTP等,更为灵活。

  • 透明代理:用户不需要进行任何设置,网络请求会自动通过代理服务器。

  • 匿名代理:代理服务器会隐藏用户的真实IP地址,但目标服务器可以知道用户使用了代理。

  • 高匿代理:完全隐藏用户的真实IP地址,目标服务器无法知道用户使用了代理。

3. 获取途径

获取代理IP的途径多种多样,但需注意代理IP的可用性和安全性:

  • 免费代理IP网站:有一些网站提供免费的代理IP列表,用户可以直接复制使用。但免费代理IP通常不稳定,速度慢,安全性差。

  • 付费代理IP服务:有专业的代理IP提供商提供付费的代理IP服务,通常提供更稳定、更快速、更安全的代理IP。

  • 自建代理服务器:用户可以自己租用或购买服务器,然后安装代理软件,自建代理服务器,这样可以完全控制代理IP的质量和安全性。

  • API接口:一些代理IP提供商提供API接口,用户可以通过API接口动态获取代理IP,方便集成到自己的应用或工具中。

  • 扫描器和爬虫:技术比较高的用户可以使用代理IP扫描器或爬虫工具,从网络上自动扫描和收集代理IP。

在这里插入一个小故事哦!对IP代理感兴趣的同学可以关注一下哦!

入门案列

爬取豆瓣的评论是一个常见的爬虫练习。今天我们利用基于Python来展示爬虫过程,使用BeautifulSoup和requests库来爬取豆瓣电影《热辣滚烫》的短评。

爬虫步骤及思路:

导入必要的库:requests用于发送HTTP请求,BeautifulSoup用于解析HTML。

定义fetch_comments函数:这个函数接收一个URL,发送GET请求获取页面内容,然后使用BeautifulSoup解析页面,提取评论并返回。

if __name__ == '__main__':部分:

  • 定义基础URL,它是不包括页数和其他参数的URL。
  • 初始化一个空列表all_comments来存储所有评论。
  • 循环获取前10页的评论:
    • 构建完整的URL,其中start参数用于指定从哪里开始获取评论。
    • 调用fetch_comments函数获取当前页的评论。
    • 将获取的评论添加到all_comments列表中。
  • 输出所有获取的评论,包括评论的序号和评论内容。

请确保已安装requestsbeautifulsoup4库。如果还未安装,可以使用以下命令安装: 

pip install requests beautifulsoup4

主要步骤: 

第一步:设置请求头,模拟浏览器访问 

headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }

第二步:发送GET请求获取页面内容并检测返回结果

  response = requests.get(url, headers=headers)

 第三步:使用BeautifulSoup解析页面内容

soup = BeautifulSoup(response.text, 'html.parser')

第四步:主要获取评论并输出评论内容

完整代码 

import requests
from bs4 import BeautifulSoup


def fetch_comments(url):
    # 设置请求头,模拟浏览器访问
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }

    # 发送GET请求获取页面内容
    response = requests.get(url, headers=headers)

    # 检查响应状态码,确保请求成功
    if response.status_code != 200:
        print('爬取失败')
        return

    # 使用BeautifulSoup解析页面内容
    soup = BeautifulSoup(response.text, 'html.parser')

    # 初始化一个空列表来存储评论
    comments = []

    # 找到所有的评论元素
    comment_items = soup.find_all('span', class_='short')

    # 遍历每个评论元素,提取评论文本并添加到列表中
    for item in comment_items:
        comments.append(item.text.strip())

    return comments


if __name__ == '__main__':
    # 基础URL,不包括页数和其他参数
    base_url = 'https://movie.douban.com/subject/36081094/comments'

    # 初始化一个空列表来存储所有评论
    all_comments = []

    # 循环获取前10页的评论
    for i in range(10):
        # 构建完整的URL,包括start参数用于指定从哪里开始获取评论
        url = f'{base_url}?start={i * 20}&limit=20&status=P&sort=new_score'

        # 调用fetch_comments函数获取当前页的评论
        comments = fetch_comments(url)

        # 将获取的评论添加到all_comments列表中
        all_comments.extend(comments)

    # 输出所有获取的评论
    for idx, comment in enumerate(all_comments, 1):
        print(f'{idx}. {comment}')

 官网评论情况:

获取的评论结果:

总结

首先,我们详细探讨了网页知识、网络传输协议、代理IP的工作原理、应用场景以及设置方式。代理IP通过第三方服务器(代理服务器)转发网络请求,从而隐藏真实IP地址,保护用户隐私和数据安全。它在网络安全、SEO优化、数据采集以及安全加固等方面有着广泛的应用。在设置代理IP时,我们可以通过浏览器、系统或软件等方式进行设置,但需要注意选择可靠的代理服务商并遵守相关法律法规。同时我们也演示如何利用requests库来爬取豆瓣评论,最主要是学会爬虫的原理以及思想思路,但我们也需要遵守相关的法律。

通过今天的学习,我们对代理IP和Nginx有了更深入的了解,必然可以为今后的Web相关工作提供了有力的基础支持。同时,我们也意识到在使用这些技术时需要遵守相关法律法规,确保合法合规地运用它们。

创作不易,你的支持是我的不竭动力,感谢大家的三连哦!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

抖音小店流量差怎么办?做好这三大细节,就可以完美解决!

大家好&#xff0c;我是电商糖果 很多刚开店的朋友&#xff0c;遇到的第一个难题就是店铺流量差。 没有流量&#xff0c;也就不会出单&#xff0c;更别提起店了。 糖果做抖音小店四年多了&#xff0c;也开了很多家小店。 很多新店没有流量&#xff0c;其实主要原因是这三个…

在mysql函数中启动事物和行锁/悲观锁实现并发条件下获得唯一流水号

业务场景 我有一个业务需求&#xff1a;我有一个报卡表 report里面有一个登记号字段 fcardno、地区代码 faddrno和发病年份 fyear&#xff0c;登记号由**“4位地区代码”“00”“发病年份”“5位流水号”**组成&#xff0c;我要在每次插入一张报卡&#xff08;每一行数据&#…

【MATLAB源码-第46期】基于matlab的OFDM系统多径数目对比,有无CP(循环前缀)对比,有无信道均衡对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM&#xff08;正交频分复用&#xff09;是一种频域上的多载波调制技术&#xff0c;经常用于高速数据通信中。以下是关于多径数目、有无CP&#xff08;循环前缀&#xff09;以及有无信道均衡在OFDM系统中对误码率的影响&am…

自如电费均摊问题

3月份搬了次家&#xff0c;嫌麻烦租了自如&#xff0c;第一个月的电费账单出来了&#xff0c;由于我是中途搬进去的&#xff0c;于是乎就好奇他会如何计算均摊&#xff0c;这个月电费账单出来了&#xff0c;算了下发现了点东西。 先说结论&#xff1a;按照我的这个均摊的方式&a…

刻度清晰耐酸碱腐蚀PFA材质实验室用塑料量具特氟龙量筒量杯

PFA量筒为上下等粗的直筒状&#xff0c;特氟龙量杯是上大下小的圆台形&#xff0c;底座均有宽台设计&#xff0c;保证稳定性&#xff0c;两者均可在实验室中作为定量量取液体的量具&#xff0c;上沿一侧有弧嘴设计&#xff0c;便于流畅地倾倒液体。 规格参考&#xff1a;5ml、…

主线程捕获子线程异常

正常情况下使用多线程出现异常时&#xff0c;都是按照单个任务去处理异常&#xff0c;在线程间不需要通信的情况下&#xff0c;任务之间互不影响&#xff0c;主线程也不必知道子线程是否发成异常。 那么只需要处理子线程异常即可 Task.Run(() > {try{throw new Exception(&…

【Vision Pro应用】分享一个收集Apple Vision Pro 应用的网站

您是否也觉得 Vision Pro 应用程序商店经常一遍又一遍地展示相同的几个 VisionOS 应用程序?许多有趣、好玩的应用程序似乎消失得无影无踪,让人很难发现它们。为了帮助大家更轻松地探索和体验最新、最有趣的 Vision Pro 应用程序,这里分享一个网站https://www.findvisionapp.…

IDEA @Autowired不显示红线

IDEA 中&#xff0c;Autowired 显示红线一般情况是注入 Mapper 或者 Dao 时出现的&#xff0c;如下图&#xff1a; 这个报错是因为 Mapper 或者 Dao 上没有加 Repository 或者 Mapper&#xff0c;Autowired 注入时就判断为这不是一个 Bean。 不建议通过加上面两个注解的方式解…

Java面试八股之hashCode()和equals()方法的重要性

hashCode()和equals()方法的重要性 逻辑判断&#xff1a;equals()方法用于定义对象逻辑上的相等标准&#xff0c;即当两个对象在业务意义上被视为“相同”时&#xff0c;equals()应返回true。 哈希表支持&#xff1a;hashCode()返回一个整数哈希码&#xff0c;用于在哈希表&a…

【电路笔记】-数字逻辑门总结

数字逻辑门总结 文章目录 数字逻辑门总结1、概述2、逻辑门真值表3、总结 数字逻辑门有三种基本类型&#xff1a;与门、或门和非门。 1、概述 我们还看到&#xff0c;数字逻辑门具有与其相反或互补的形式&#xff0c;分别为“与非门”、“或非门”和“缓冲器”&#xff0c;并且…

AIGC的崛起:定义未来内容创作的新纪元

&#x1f31f;文章目录 &#x1f31f;AIGC简介&#x1f31f; AIGC的相关技术与特点&#x1f31f;AIGC有哪些应用场景&#xff1f;&#x1f31f;AIGC对其他行业影响&#x1f31f;面临的挑战与问题&#x1f31f;AIGC未来发展 &#x1f31f;AIGC十大热门网站推荐&#xff1a; 文心…

常用的7个免费ChatGPT网站

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

2022天梯赛 L3_2 关于深度优先搜索和逆序对的题应该不会很难吧这件事 【树上逆序对计数】

传送门&#xff1a;https://pintia.cn/problem-sets/994805046380707840/exam/problems/1518582895035215872?type7&page1 思路 观察发现&#xff0c;逆序对可以分成两类&#xff1a; 节点 u u u 和 v v v 有明确的父子关系&#xff08;不一定是直属的直连边&#xff…

今天给大家推荐36套404页面模板

404页面是网站必备的一个页面&#xff0c;它承载着用户体验与SEO优化的重任。当用户访问不存在的页面时&#xff0c;服务器会返回404错误代码&#xff0c;并显示404页面。一个好的404页面可以帮助用户快速找到所需信息&#xff0c;并提升网站的用户体验。 以下是一些演示下载资…

Web3技术简介:重新定义互联网的未来

引言 在21世纪的数字时代&#xff0c;互联网已成为我们日常生活的不可或缺的一部分。然而&#xff0c;随着区块链和加密技术的快速发展&#xff0c;一个全新的互联网模型——Web3&#xff0c;正逐渐崭露头角。Web3不仅仅是技术的进步&#xff0c;它更是对传统互联网模型的挑战…

类和对象中阶3⃣️-默认成员函数(赋值运算符重载,取地址及 const取地址操作符重载等)

目录 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 5.4 重载流插入与流提取 流插入<<运算符重载 流提取运算符重载 6.日期类实现 7.const成员 8.取地址 及 const取地址操作符 重载 5.赋值运算符重载 5.1 运算符重载 C为了增强代码…

数仓建模—数据仓库初识

数仓建模—数据仓库初识 数据仓库之父Bill Inmon在1991年出版的"Building the Data Warehouse"一书中所提出的定义被广泛接受 数据仓库&#xff08;Data Warehouse&#xff09;是一个面向主题的&#xff08;Subject Oriented&#xff09;、集成的&#xff08;Integ…

Mysql索引专题

文章目录 1. 数据库索引结构1.1 Hash结构1.2 树结构1.3 Mysql索引怎么提升效率? 2. 执行计划 explainidselect_typetabletypepossible_keyskeykey_lenrefrowsfiteredextra 1. 数据库索引结构 我们都知道mysql数据库的常用存储结构是B树&#xff0c;为什么是B树&#xff1f;试…

邮件代发API发送邮件如何使用?操作指南?

邮件代发邮箱API发送邮件的步骤&#xff1f;代发有哪些注意事项&#xff1f; 在自动化办公、批量营销等场景中&#xff0c;手动发送邮件往往显得效率低下&#xff0c;这时候&#xff0c;邮件代发API就显得尤为重要。那么&#xff0c;邮件代发API发送邮件究竟如何使用呢&#x…

买婴儿洗衣机怎么选择?四大绝佳好用婴儿洗衣机分享

幼龄时期的宝宝的衣物&#xff0c;是比较需要注意的时候。可能一不注意宝宝穿在身上就会有不适宜症状发生。所以宝妈们真的要随时观察&#xff0c;然后在宝宝洗衣服的这上面多下点功夫&#xff0c;不要让宝宝受到这种无谓的伤害。小婴儿的抵抗力比我们差很多。有些细菌、病毒可…