网络爬虫【爬虫库request】

  我叫不三不四,很高兴见到大家,欢迎一起学习交流和进步

今天来讲一讲爬虫

Requests是Python的一个很实用的HTTP客户端库,完全满足如今网络爬虫的需求。与Urllib对比,Requests不仅具备Urllib的全部功能;在开发使用上,语法简单易懂,完全符合Python优雅、简洁的特性;在兼容性上,完全兼容Python 2和Python 3,具有较强的适用性。

请求方式

HTTP的请求方式分为GET和POST

GET请求

url语法如下:

# 不带参数
url_without_params = "https://www.baidu.com/"# 带参数 wd
url_with_params = "https://www.baidu.com/s?参数名=参数值"

注:如果一个URL有多个参数,参数之间用“&”连接,并且,request对于带参数的url请求有两种处理方式:

import requests# 第一种方式
r = requests.get('https://www.baidu.com/s?参数名=参数值')# 第二种方式
url = 'https://www.baidu.com/s'
params = {'参数名': '参数值'}
# 左边 params 在 GET 请求中表示设置参数
r = requests.get(url, params=params)# 输出生成的 URL
print(r.url)

对于动态变化的参数,我们可以采用%s来占位的方式来处理:

url_template = 'https://www.baidu.com/s?参数名=%s'
search_term = '参数值'# 使用字符串格式化将搜索词插入到URL中
formatted_url = url_template % search_termprint(formatted_url)

这样输出的将会是:

https://www.baidu.com/s?参数名=参数值

POST请求

POST请求常用来提交表单,表单数据就是POST的请求参数。在 requests 中实现POST请求时,需要设置 data 参数,数据格式可以是字典、元组、列表或JSON。不同格式各有优势。

# 字典类型
data = {'key1': 'value1', 'key2': 'value2'}# 元组或列表
# 这里应该是元组的列表,而不是元组中包含元组
tuple_list = (('key1', 'value1'), ('key2', 'value2'))# JSON
import json# 将字典转换为JSON
data_json = json.dumps(data)# 发送POST请求
import requests
r = requests.post("https://www.baidu.com/", data=data_json)
print(r.text)

tips:什么是JOSN:

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript编程语言的一个子集,但是它是独立于语言的,许多不同的编程语言都支持生成和解析JSON数据,使其成为理想的数据交换语言。

JSON是构建在两种结构之上的:


1. 键值对:数据以`名称/值`对的形式存储,其中名称(或称为键)是一个字符串,而值可以是字符串、数字、数组、布尔值或另一个JSON对象。

2. 数组:数据以有序的列表形式存储,列表中的每个元素可以是字符串、数字、数组、布尔值或另一个JSON对象。

一个典型的JSON对象示例如下:

{"name": "John Doe","age": 30,"is_student": false,"hobbies": ["reading", "gaming", "sports"],"address": {"street": "123 Main St","city": "Anytown","state": "CA","zip": "12345"}
}

在这个例子中,`name`、`age`、`is_student`、`hobbies`和`address`是键,而它们对应的值分别是字符串、数字、布尔值、字符串数组和另一个JSON对象。

JSON因其简洁和易于解析的特性,在Web开发中被广泛用于客户端和服务器之间的数据交换。例如,当一个Web应用从服务器请求数据时,服务器通常会以JSON格式返回数据,然后Web应用可以使用JavaScript轻松地解析这些数据并更新用户界面。

`requests.Response`对象的属性和方法


1.基本响应信息

• `r.status_code`

• 作用:返回响应状态码(如200、404、500等)。

• 使用场景:判断请求是否成功。


• `r.reason`

• 作用:返回响应状态码的文本描述(如`OK`、`Not Found`等)。

• 使用场景:提供更详细的响应状态描述。


• `r.url`

• 作用:返回实际请求的URL(可能经过重定向后的最终URL)。

• 使用场景:确认请求的最终地址。


2.响应内容

• `r.raw`

• 作用:返回原始响应体,可以通过`r.raw.read()`读取。

• 使用场景:处理二进制数据或流式响应。


• `r.content`

• 作用:以字节方式返回响应体,需要手动解码。

• 使用场景:处理二进制文件(如图片、视频)。


• `r.text`

• 作用:以字符串方式返回响应体,会自动根据响应头的`Content-Type`或`Content-Encoding`解码。

• 使用场景:处理文本内容(如HTML、JSON)。


• `r.json()`

• 作用:将响应体解析为JSON对象。

• 使用场景:处理JSON格式的响应数据。


• `r.encoding`

• 作用:返回响应的编码格式(如`utf-8`)。

• 使用场景:确认或修改响应的编码。


• `r.apparent_encoding`

• 作用:基于响应内容分析得出的编码格式(可能与`r.encoding`不同)。

• 使用场景:当`r.encoding`为空或不准确时,作为备选编码。


3.响应头和Cookie

• `r.headers`

• 作用:以字典形式返回响应头,字典键不区分大小写。

• 使用场景:获取响应头中的信息(如`Content-Type`、`Content-Length`等)。


• `r.cookies`

• 作用:返回请求后的Cookie对象。

• 使用场景:获取服务器返回的Cookie信息。


• `r.links`

• 作用:返回响应头中的`Link`字段内容,以字典形式存储。

• 使用场景:处理分页或资源链接。


4.重定向和跳转

• `r.history`

• 作用:返回一个包含所有中间跳转响应的列表。

• 使用场景:跟踪请求的跳转路径。


• `r.is_redirect`

• 作用:判断响应是否是重定向(如301、302状态码)。

• 使用场景:控制重定向逻辑。


• `r.is_permanent_redirect`

• 作用:判断响应是否是永久重定向(301状态码)。

• 使用场景:处理需要更新URL的重定向。


• `r.next`

• 作用:返回下一个响应对象(如果存在重定向)。

• 使用场景:手动处理重定向时获取下一个响应。


5.性能和资源管理

• `r.elapsed`

• 作用:返回从发送请求到收到响应的总耗时(`timedelta`对象)。

• 使用场景:用于性能测试或监控请求的响应时间。


• `r.close()`

• 作用:关闭响应对象,释放资源。

• 使用场景:在使用`r.raw`或处理大文件时,手动关闭响应对象以释放资源。


6.迭代和流式处理

• `r.iter_content(chunk_size=1, decode_unicode=False)`

• 作用:以迭代的方式逐块读取响应内容,适合处理大文件。

• 参数:

• `chunk_size`:每次读取的块大小(以字节为单位)。

• `decode_unicode`:是否将内容解码为Unicode。

• 使用场景:下载大文件时逐块写入磁盘,避免占用过多内存。


• `r.iter_lines(decode_unicode=False, chunk_size=512)`

• 作用:以迭代的方式逐行读取响应内容,适合处理文本数据。

• 参数:

• `decode_unicode`:是否将内容解码为Unicode。

• `chunk_size`:每次读取的块大小。

• 使用场景:处理日志文件或文本数据时逐行读取。


7.请求信息

• `r.request`

• 作用:返回发送的请求对象(`requests.PreparedRequest`)。

• 使用场景:调试或查看发送的请求细节(如请求头、请求体等)。


8.异常处理

• `r.raise_for_status()`

• 作用:如果响应状态码表示请求失败(非200响应),则抛出异常。

• 使用场景:在需要严格处理请求失败时,自动抛出异常。

提交复杂的请求

在进行网络爬虫开发或与 Web API 交互时,我们常常需要对 HTTP 请求进行定制化处理,以满足各种复杂场景的需求。本文将详细介绍如何使用 Python 的 Requests 库实现复杂网络访问,包括添加请求头、使用代理 IP、证书验证、超时设置以及使用 Cookies 等常用功能。


一、添加请求头

在 HTTP 请求中,请求头(Headers)是客户端向服务器发送额外信息的重要载体,例如指定客户端的类型、语言、接受的数据类型等。通过设置请求头,可以模拟不同的浏览器或客户端行为,从而提高请求的成功率和兼容性。

以下是添加请求头的代码示例:

import requests# 定义请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3","Accept-Language": "en-US,en;q=0.9","Accept-Encoding": "gzip, deflate, br"
}# 发送请求并设置 headers 参数
response = requests.get("https://example.com", headers=headers)# 打印响应内容
print(response.text)


在上述代码中,我们首先定义了一个名为`headers`的字典,其中包含了常见的请求头字段,如`User-Agent`、`Accept-Language`和`Accept-Encoding`。然后在`requests.get`方法中通过`headers`参数将该字典传递给请求,从而在发送请求时附加了这些自定义的请求头信息。


二、使用代理 IP

在某些情况下,我们可能需要通过代理服务器来发送请求,例如隐藏真实 IP 地址、访问受限地区的内容等。Requests 库支持使用代理 IP,其使用方法与添加请求头类似,只需设置`proxies`参数即可。

以下是使用代理 IP 的代码示例:

import requests# 定义代理 IP
proxies = {"http": "http://123.45.67.89:8080","https": "https://123.45.67.89:8080"
}# 发送请求并设置 proxies 参数
response = requests.get("https://example.com", proxies=proxies)# 打印响应内容
print(response.text)



在代码中,`proxies`是一个字典,其键分别为`"http"`和`"https"`,对应的值是代理服务器的地址和端口号。通过设置`proxies`参数,Requests 库会将请求通过指定的代理服务器发送出去。

需要注意的是,在使用代理 IP 时,应确保代理服务器的地址和端口号是有效的,并且代理服务器支持目标网站的访问。此外,代理服务器可能会对请求进行限制或修改,因此在使用过程中需要根据实际情况进行调试和优化。


三、证书验证

在与 HTTPS 网站进行交互时,证书验证是一个重要的安全机制。默认情况下,Requests 库会对 HTTPS 证书进行验证,以确保通信的安全性。然而,在某些开发或测试环境中,我们可能需要关闭证书验证,或者使用自定义的证书文件。

以下是证书验证的代码示例:


关闭证书验证

import requests# 发送请求并关闭证书验证
response = requests.get("https://example.com", verify=False)# 打印响应内容
print(response.text)



在上述代码中,通过将`verify`参数设置为`False`,可以关闭对 HTTPS 证书的验证。这在开发过程中用于测试或访问自签名证书的网站时非常有用,但在生产环境中不建议关闭证书验证,因为这会降低通信的安全性。


使用自定义证书文件
 

import requests# 发送请求并指定证书文件路径
response = requests.get("https://example.com", verify="/path/to/certificate.pem")# 打印响应内容
print(response.text)


如果需要使用自定义的证书文件进行验证,可以将`verify`参数的值设置为证书文件的路径。这在访问需要特定证书验证的网站时非常有用,例如企业内部的 HTTPS 服务。


四、超时设置

在网络请求过程中,由于网络延迟、服务器响应缓慢等原因,可能会导致请求长时间没有得到响应。为了避免程序无限等待,可以通过设置超时时间来限制请求的等待时间。

以下是超时设置的代码示例:

import requests# 发送请求并设置超时时间为 5 秒
try:response = requests.get("https://example.com", timeout=5)print(response.text)
except requests.exceptions.Timeout:print("请求超时")


在代码中,通过设置`timeout`参数的值为`5`,表示请求的超时时间为 5 秒。如果在 5 秒内没有收到服务器的响应,Requests 库会抛出一个`Timeout`异常。通过捕获该异常,可以对超时情况进行相应的处理,例如重试请求或提示用户。

需要注意的是,超时时间的设置应根据实际需求进行调整。如果目标网站的响应速度较慢,可以适当增加超时时间;如果对响应速度要求较高,可以适当减少超时时间。


五、使用 Cookies

Cookies 是服务器存储在客户端的一小段文本信息,用于标识用户身份、记录用户偏好等。在使用 Requests 库发送请求时,可以通过设置`cookies`参数来使用 Cookies,从而实现会话管理等功能。

以下是使用 Cookies 的代码示例:
(从字符串转换 Cookies)

import requests# 从浏览器获取的 Cookies 字符串
temp_cookies = "cookie1=value1; cookie2=value2"# 将 Cookies 字符串转换为字典
cookies = {}
for cookie in temp_cookies.split("; "):key, value = cookie.split("=")cookies[key] = value# 发送请求并设置 cookies 参数
response = requests.get("https://example.com", cookies=cookies)# 打印响应内容
print(response.text)


在上述代码中,`temp_cookies`是从浏览器的开发者工具中获取的 Cookies 字符串。通过两次分割操作,第一次以`"; "`分割得到列表 A,第二次对列表 A 中的每个元素以`"="`分割得到字典的键值对,从而将 Cookies 字符串转换为字典格式。然后在`requests.get`方法中通过`cookies`参数将该字典传递给请求,即可在请求中使用这些 Cookies。


使用 RequestsCookieJar 对象

import requests# 发送请求并获取服务器返回的 Cookies
response = requests.get("https://example.com")
cookies = response.cookies# 打印 Cookies 信息
print(cookies)# 再次发送请求并使用获取到的 Cookies
response = requests.get("https://example.com", cookies=cookies)# 打印响应内容
print(response.text)


在代码中,当程序发送请求时(不设置参数`cookies`),Requests 库会自动生成一个`RequestsCookieJar`对象,该对象用于存放服务器返回的 Cookies 信息。通过`response.cookies`可以获取到该对象,然后在后续的请求中通过`cookies`参数将该对象传递给请求,从而实现 Cookies 的传递和使用。


Cookies 的读写操作

如果需要将 Cookies 信息持久化存储,可以使用`http`模块实现 Cookies 的读写操作。此外,还可以将 Cookies 以字典形式写入文件,这种方法相对简单,但安全性较低。以下是将 Cookies 以字典形式写入文件的代码示例:

import json# 将 Cookies 以字典形式写入文件
with open("cookies.json", "w") as f:json.dump(cookies, f)# 从文件中读取 Cookies
with open("cookies.json", "r") as f:cookies = json.load(f)# 打印读取到的 Cookies
print(cookies)



在代码中,通过`json`模块的`dump`方法将 Cookies 字典写入文件,通过`load`方法从文件中读取 Cookies 字典。这种方法可以方便地将 Cookies 信息保存到本地文件中,以便在后续的程序运行中能够重复使用。

下载与上传文件

文件下载

用Python的`requests`库从网络上下载图片并保存到本地的基本示例:

import requests# 图片的URL
url = 'https://www.python.org/static/img/python-logo.png'# 发送GET请求
r = requests.get(url)# 检查请求是否成功
if r.status_code == 200:# 打开一个文件用于写入二进制数据with open('python.jpg', 'wb') as f:# 将图片内容写入文件f.write(r.content)print("图片已成功下载并保存为 python.jpg")
else:print("请求失败,状态码:", r.status_code)

代码解释:
1. 导入库:

• `import requests`:导入`requests`库,用于发送HTTP请求。
2. 设置URL:

• `url='
3. 发送请求:

• `r = requests.get(url)`:使用`requests.get()`方法发送GET请求到指定的URL。
4. 检查响应状态码:

• `if r.status_code == 200:`:检查响应的状态码是否为200(表示请求成功)。


5. 保存文件:

• `with open('python.jpg', 'wb') as f:`:以二进制写入模式打开一个文件,文件名为`python.jpg`。

• `f.write(r.content)`:将响应内容(图片的二进制数据)写入文件。


6. 关闭文件:

• 使用`with`语句自动管理文件的打开和关闭,不需要显式调用`f.close()`。


7. 错误处理:

• 如果请求失败(状态码不是200),打印错误信息。

文件上传

文件上传的逻辑是把数据以字节流的形式上传到服务器上,再由服务器上传接收内容,文件上传有一定难度,难点在于服务器接收规则不同。

分析请求

首先通过Fiddler抓包工具来分析微博的发布过程中的网络请求信息:


(1)访问微博并准备抓包

• 访问微博:在浏览器中输入`

• 单击“高级”按钮:在微博页面上,可能存在一些高级选项或设置按钮,单击它可能会触发一些额外的网络请求或页面功能,为后续的抓包操作提供更多的信息。

• 使用Fiddler抓包:

• Fiddler是一款网络调试工具,可以捕获和分析所有客户端和服务器之间的HTTP/HTTPS通信。

• 由于在发送微博时,网页会发生302跳转(即浏览器会自动跳转到另一个页面),这会导致Chrome浏览器清空请求信息,使得抓取难度较大。因此,使用Fiddler可以更有效地捕获这些请求信息,因为它不会受到浏览器自动跳转的影响,能够完整地记录整个请求过程。


(2)发布微博并查看抓包信息

• 单击“选择文件”:在微博发布页面上,单击“选择文件”按钮,选择一张图片文件。这一步是为了模拟发布微博时上传图片的过程,上传图片会触发一个网络请求,将图片文件发送到微博服务器。

• 输入发布内容:在微博发布框中输入“Python爬虫”,这是微博的正文内容。输入内容后,微博客户端会将这些内容作为请求的一部分发送到服务器。

• 单击“发布”按钮:最后单击“发布”按钮,这会触发微博的发布请求。微博客户端会将图片文件、正文内容以及其他相关信息(如用户身份验证信息等)打包成一个HTTP请求,发送到微博服务器。

• 查看Fiddler抓取的请求信息:Fiddler会捕获上述过程中所有的网络请求和响应信息。这些信息包括请求的URL、请求方法(如POST)、请求头(包含用户身份验证信息、内容类型等)、请求体(包含微博正文和图片文件等)、响应状态码以及响应内容等。通过查看这些信息,可以了解微博发布过程中的数据传输细节,例如请求的格式、服务器的响应等,这对于分析微博的网络交互机制、开发与微博相关的程序(如爬虫)等非常有帮助。

从图得知,该请求方式是POST, QueryString是POST的请求参数data, Content-type是上传文件,三个Content-Disposition分别对应发布内容、发布图片和设置分组可见。代码实现如下:

url = 'https://weibo.cn/imblog/sendmblog?rl=0&st=bd6702'
cookies = {'xxx': 'xxx'}
files = {'content': (None, 'Python 爬虫'),'pic': ('pic', open('test.png', 'rb')),'image/png', 'visible': (None, '0')
}
r = requests.post(url, files=files, cookies=cookies)
print(r.status_code)

POST数据对象是以文件为主的,上传文件时使用files参数作为请求参数。Requests对提交的数据和文件所使用的请求参数做了明确的规定。
参数files也是以字典形式传递的,每个Content-Disposition为字典的键值对,Content-Disposition的name为字典的键,value为字典的值。

 

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

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

相关文章

MTKAndroid12 解决SystemUI下拉框中,长按WIFI图标会导致崩溃问题

解决SystemUI下拉框中,长按WIFI图标会导致崩溃问题 文章目录 场景参考资料修改文件解决方案日志源码分析 总结 场景 在部分产品中偶发性发现, SystemUI下拉框下拉后长按WIFI图标会导致崩溃问题,有时候是截屏、点击Home 按键后,长…

第三十一篇 数据仓库(DW)与商业智能(BI)架构设计与实践指南

目录 一、DW/BI架构核心理论与选型策略1.1 主流架构模式对比(1)Kimball维度建模架构(2)Inmon企业工厂架构(3)混合架构 二、架构设计方法论与实施步骤2.1 维度建模实战指南(1)模型选择…

XSS基础靶场练习

目录 1. 准备靶场 2. PASS 1. Level 1&#xff1a;无过滤 源码&#xff1a; 2. level2&#xff1a;转HTML实体 htmlspecialchars简介&#xff1a; 源码 PASS 3. level3:转HTML深入 源码&#xff1a; PASS 4. level4:过滤<> 源码&#xff1a; PASS: 5. level5:过滤on 源码…

2025年3月AI搜索发展动态与趋势分析:从技术革新到生态重构

025年3月AI搜索发展动态与趋势分析&#xff1a;从技术革新到生态重构 一、行业动态&#xff1a;巨头布局与技术升级 谷歌推出“AI模式”&#xff0c;重新定义搜索体验 谷歌上线全新“AI模式”&#xff0c;集成多模态交互与实时数据能力&#xff0c;用户可通过文本、图片或语音…

熔断降级(Sentinel解决)

问题概述 在微服务架构中一定要预防微服务雪崩问题&#xff0c;微服务雪崩问题就是指在微服务架构中&#xff0c;当一个服务出现故障时&#xff0c;由于服务之间的依赖关系&#xff0c;故障可能会传播到其他服务&#xff0c;从而导致了大规模的服务失败&#xff0c;系统无法正…

Qt高分屏自适应

一.设置默认 DPI 感知 Windows 上的桌面应用程序可以在不同的 DPI 感知模式下运行。 这些模式可实现不同的 DPI 缩放行为,并且可以使用不同的坐标空间。 有关 DPI 感知的详细信息,请参阅在 Windows 上开发高 DPI 桌面应用程序。 请务必显式为进程设置默认 DPI 感知模式,以避…

TPCTF 2025 web 复现

文章目录 baby layoutsafe layoutSafe Layout Revengesupersqli baby layout 在index.js文件中&#xff0c;看到了有使用DOMPurify库来防止XSS操作 在package.json里可以看到版本是3.2.4,关于3.2.3是有绕过策略的。它会把script标签清除掉&#xff0c;去看bot可以看到flag是放…

Agent Team 多智能体系统解析

引言 在人工智能技术高速发展的今天&#xff0c;"多智能体协作系统"&#xff08;Agent Team&#xff09;正成为突破效率瓶颈的关键技术。与传统的单体AI不同&#xff0c;这种由多个专业化智能体组成的协同网络&#xff0c;通过分工协作和动态调整&#xff0c;展现出…

【前端 vue 或者麦克风,智能语音识别和播放功能】

前端 vue 或者麦克风&#xff0c;智能语音识别和播放功能 1. 终端安装 npm install recordrtc2.引入 import RecordRTC from recordrtc3.html&#xff08;根据自己业务更改&#xff09; <div class"Page"><el-form ref"mainFormRef" class&qu…

bootstrap 表格插件bootstrap table 的使用经验谈!

最近在开发一个物业管理软件&#xff0c;其中用到bootstrap 的模态框。同时需要获取表格数据。用传统的方法&#xff0c;本人不想用&#xff0c;考虑到bootstrap应该有获取表格数据的方法&#xff0c;结果发现要想实现获取表格数据功能&#xff0c;需要通过bootstrap的插件实现…

HTML 图像与多媒体元素:拓展学习边界的进度记录(一)

开篇&#xff1a;学习启程 在前端开发的广袤领域中&#xff0c;HTML 作为构建网页的基石&#xff0c;其重要性不言而喻。而 HTML 图像与多媒体元素&#xff0c;就像是为这座基石添上了绚丽的色彩与灵动的音符&#xff0c;赋予网页更加丰富的表现力和交互性。作为一名热衷于探索…

循环不变量原则——螺旋矩阵

题目&#xff1a;螺旋矩阵 本题相较于螺旋矩阵II的不同之处是&#xff1a;螺旋矩阵II的矩阵是n行n列的方阵&#xff0c;而本题的矩阵并不一定是方阵。所以在遵循循环不变量原则遍历完矩阵后&#xff0c;还会有一行或者一列没有遍历。 1、行多列少&#xff08;多一列没遍历&am…

【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作

文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看&#xff01; 一、Visual Studio Code下载 下载官网&#xff1a;https://code.visualstudio.com/ 进入官网后点击右上角的Download &…

Java对象的hashcode

在 Java 中&#xff0c;hashcode 和 equals 方法是 Object 类的两个重要方法&#xff0c;它们在处理对象比较和哈希集合&#xff08;如 HashMap、HashSet&#xff09;时起着关键作用。对于equals大部分Java程序员都不陌生&#xff0c;它通常是比较两个对象的内容(值)是否相等(双…

Ubuntu22.04通过DKMS包安装Intel WiFi系列适配器(网卡驱动)

下载驱动包 访问 backport-iwlwifi-dkmshttps://launchpad.net/ubuntu/source/backport-iwlwifi-dkms 网站&#xff0c;找到适用于Ubuntu 22.04的update版本&#xff08;如backport-iwlwifi-dkms_xxxx_all.deb&#xff09;&#xff0c;下载至本地。 安装驱动 在下载目录中执行以…

深度学习--概率

1 基本概率论 1.1 假设我们掷骰子&#xff0c;想知道1而不是看到另一个数字的概率&#xff0c;如果骰子是公司&#xff0c;那么所有6个结果(1..6),都有相同的可能发生&#xff0c;因此&#xff0c;我们可以说1发生的概率为1/6. 然而现实生活中&#xff0c;对于我们从工厂收到的…

kaggle上经典泰坦尼克项目数据分析探索

之前了解在kaggle上这个项目很火&#xff0c;最近想要加强一下python数据分析&#xff0c;所以在kaggle上找到这个项目进行学习探索&#xff0c;下面是将一些学习资料以及过程整理出来。 一、首先我们了解一下项目背景以及如何找到这个项目。 kaggle项目地址: https://www.k…

《深度剖析:鸿蒙系统不同终端设备的UI自适应布局策略》

在万物互联的时代&#xff0c;鸿蒙系统以其独特的分布式理念和强大的技术架构&#xff0c;迅速在智能终端领域崭露头角。随着鸿蒙生态的不断壮大&#xff0c;越来越多的开发者投身其中&#xff0c;致力于为用户打造丰富多样的应用体验。然而&#xff0c;如何让应用在不同终端设…

计算机网络的软件、硬件和组成

&#xff11;.计算机网络的组成 计算机网络是一个十分复杂的系统&#xff0c;在逻辑上可以分为完成数据通信的通信子网和进行数据处理的资源子网两个部分。 通信子网 通信子网提供网络通信的功能&#xff0c;可以完成网络主机之间的数据传输、交换、通信控制和信号变换等通信…

告别低效人工统计!自动计算计划进度

实时监控任务进度一直是项目管理中的一项巨大挑战。 人工统计方式不仅耗时耗力&#xff0c;而且往往由于信息传递的延迟和人为误差&#xff0c;导致无法实时获得准确的项目进展信息。 这种不准确性可能掩盖潜在的风险点&#xff0c;从而影响项目的整体进度和成果。 Ganttable …