Python-04BeautifulSoup网络爬虫
2025-03-04-BeautifulSoup网络爬虫
记录BeautifulSoup网络爬虫的核心知识点

文章目录
- 2025-03-04-BeautifulSoup网络爬虫
- @[toc]
- 1-参考网址
- 2-学习要点
- 3-核心知识点
- 1. 安装
- 2. 导入必要的库
- 3. 发送 HTTP 请求
- 4. 创建 BeautifulSoup 对象
- 5. 解析 HTML 内容
- 5.1 查找标签
- 5.2 根据属性查找
- 5.3 CSS 选择器
- 6. 获取标签内容和属性
- 6.1 获取标签文本内容
- 6.2 获取标签属性值
- 7. 处理嵌套标签
- 8. 处理编码问题
- 9. 异常处理
- 10. 遵守网站规则
- 4-常用方法
- 1-属性与方法
- 2-其他属性
- 3-查找方法
- 5-代码示例
- 1-网页搜索
- 2-网页标题
- 3-网页编码
- 4-查询标签a
- 5-查询标签p
- 6-查询父标签
- 7-查询div
- 8-查询CSS
- 9-更新网页
- 10-转化网页
- 11-lxml进行XPath查找
文章目录
- 2025-03-04-BeautifulSoup网络爬虫
- @[toc]
- 1-参考网址
- 2-学习要点
- 3-核心知识点
- 1. 安装
- 2. 导入必要的库
- 3. 发送 HTTP 请求
- 4. 创建 BeautifulSoup 对象
- 5. 解析 HTML 内容
- 5.1 查找标签
- 5.2 根据属性查找
- 5.3 CSS 选择器
- 6. 获取标签内容和属性
- 6.1 获取标签文本内容
- 6.2 获取标签属性值
- 7. 处理嵌套标签
- 8. 处理编码问题
- 9. 异常处理
- 10. 遵守网站规则
- 4-常用方法
- 1-属性与方法
- 2-其他属性
- 3-查找方法
- 5-代码示例
- 1-网页搜索
- 2-网页标题
- 3-网页编码
- 4-查询标签a
- 5-查询标签p
- 6-查询父标签
- 7-查询div
- 8-查询CSS
- 9-更新网页
- 10-转化网页
- 11-lxml进行XPath查找
1-参考网址
- Python爬虫–BeautifulSoup:https://blog.csdn.net/weixin_45953332/article/details/145971342
- 个人尝试代码仓库:https://gitee.com/enzoism/beautifulsoup
2-学习要点
- 1)进行网页请求-打印网页内容
- 2)进行网页请求-确保请求成功
- 3)进行网页请求-自动检测编码
- 4)进行网页请求-find和finaAll-href属性/文本内容
- 5)进行网页请求-XPath表达式查找
- 6)进行网页请求-CSS元素捕获
- 7)进行网页请求-修改HTML内容-可修改标签的属性、文本或删除标签
- 8)进行网页请求-转换为字符串
3-核心知识点
BeautifulSoup 是一个用于从 HTML 或 XML 文件中提取数据的 Python 库,结合合适的网络请求库(如
requests)可以方便地实现网络爬虫。以下是使用
BeautifulSoup 进行网络爬虫的核心知识点:
1. 安装
使用pip来安装 BeautifulSoup 库,通常还需要安装解析器,常用的解析器有lxml(速度快)和html.parser(Python 内置)。
pip install beautifulsoup4
pip install lxml
2. 导入必要的库
在编写代码前,需要导入requests用于发送 HTTP 请求,BeautifulSoup用于解析 HTML 或 XML 内容。
import requests
from bs4 import BeautifulSoup
3. 发送 HTTP 请求
使用requests库发送 HTTP 请求,获取网页的 HTML 内容。
url = 'https://example.com'
response = requests.get(url)# 检查请求是否成功
if response.status_code == 200:html_content = response.text
else:print(f"请求失败,状态码: {response.status_code}")
4. 创建 BeautifulSoup 对象
使用BeautifulSoup类创建一个解析对象,需要传入 HTML 内容和解析器名称。
soup = BeautifulSoup(html_content, 'lxml')
5. 解析 HTML 内容
5.1 查找标签
find():返回第一个匹配的标签对象。
# 查找第一个 <title> 标签
title_tag = soup.find('title')
print(title_tag)
find_all():返回所有匹配的标签对象列表。
# 查找所有 <a> 标签
all_links = soup.find_all('a')
for link in all_links:print(link)
5.2 根据属性查找
可以通过attrs参数或直接指定属性名来查找具有特定属性的标签。
# 查找所有 class 为 'example-class' 的 <div> 标签
divs = soup.find_all('div', class_='example-class')
for div in divs:print(div)# 查找所有 id 为 'example-id' 的标签
element = soup.find(id='example-id')
print(element)
5.3 CSS 选择器
使用select()方法通过 CSS 选择器来查找标签。
# 查找所有 <p> 标签下的 <a> 标签
links_in_paragraphs = soup.select('p a')
for link in links_in_paragraphs:print(link)
6. 获取标签内容和属性
6.1 获取标签文本内容
使用get_text()或text属性获取标签的文本内容。
# 获取 <title> 标签的文本内容
title_text = title_tag.get_text()
print(title_text)
6.2 获取标签属性值
使用字典索引的方式获取标签的属性值。
# 获取第一个 <a> 标签的 href 属性值
first_link = soup.find('a')
if first_link:href_value = first_link['href']print(href_value)
7. 处理嵌套标签
BeautifulSoup 可以方便地处理嵌套标签,通过层层查找获取所需信息。
# 查找一个包含多个 <li> 标签的 <ul> 标签
ul_tag = soup.find('ul')
if ul_tag:li_tags = ul_tag.find_all('li')for li in li_tags:print(li.get_text())
8. 处理编码问题
在处理不同编码的网页时,可能需要指定编码方式。
response = requests.get(url)
response.encoding = 'utf-8' # 指定编码方式
html_content = response.text
9. 异常处理
在网络请求和解析过程中,可能会出现各种异常,需要进行适当的异常处理。
try:response = requests.get(url)response.raise_for_status() # 检查请求是否成功html_content = response.textsoup = BeautifulSoup(html_content, 'lxml')# 进行后续解析操作
except requests.RequestException as e:print(f"请求出错: {e}")
except Exception as e:print(f"发生其他错误: {e}")
10. 遵守网站规则
在进行网络爬虫时,需要遵守网站的robots.txt规则,避免对网站造成过大压力。可以使用robotparser库来检查是否可以访问某个页面。
from urllib.robotparser import RobotFileParserrp = RobotFileParser()
rp.set_url('https://example.com/robots.txt')
rp.read()
if rp.can_fetch('*', 'https://example.com'):# 可以进行爬取操作pass
else:print("不允许爬取该页面")
4-常用方法
1-属性与方法
以下是 BeautifulSoup 中常用的属性和方法:
| 方法/属性 | 描述 | 示例 |
|---|---|---|
| BeautifulSoup() | 用于解析 HTML 或 XML 文档并返回一个 BeautifulSoup 对象。 | soup = BeautifulSoup(html_doc, 'html.parser') |
| .prettify() | 格式化并美化文档内容,生成结构化的字符串。 | print(soup.prettify()) |
| .find() | 查找第一个匹配的标签。 | tag = soup.find('a') |
| .find_all() | 查找所有匹配的标签,返回一个列表。 | tags = soup.find_all('a') |
| .find_all_next() | 查找当前标签后所有符合条件的标签。 | tags = soup.find('div').find_all_next('p') |
| .find_all_previous() | 查找当前标签前所有符合条件的标签。 | tags = soup.find('div').find_all_previous('p') |
| .find_parent() | 返回当前标签的父标签。 | parent = tag.find_parent() |
| .find_all_parents() | 查找当前标签的所有父标签。 | parents = tag.find_all_parents() |
| .find_next_sibling() | 查找当前标签的下一个兄弟标签。 | next_sibling = tag.find_next_sibling() |
| .find_previous_sibling() | 查找当前标签的前一个兄弟标签。 | prev_sibling = tag.find_previous_sibling() |
| .parent | 获取当前标签的父标签。 | parent = tag.parent |
| .next_sibling | 获取当前标签的下一个兄弟标签。 | next_sibling = tag.next_sibling |
| .previous_sibling | 获取当前标签的前一个兄弟标签。 | prev_sibling = tag.previous_sibling |
| .get_text() | 提取标签内的文本内容,忽略所有 HTML 标签。 | text = tag.get_text() |
| .attrs | 返回标签的所有属性,以字典形式表示。 | href = tag.attrs['href'] |
| .string | 获取标签内的字符串内容。 | string_content = tag.string |
| .name | 返回标签的名称。 | tag_name = tag.name |
| .contents | 返回标签的所有子元素,以列表形式返回。 | children = tag.contents |
| .descendants | 返回标签的所有后代元素,生成器形式。 | for child in tag.descendants: print(child) |
| .parent | 获取当前标签的父标签。 | parent = tag.parent |
| .previous_element | 获取当前标签的前一个元素(不包括文本)。 | prev_elem = tag.previous_element |
| .next_element | 获取当前标签的下一个元素(不包括文本)。 | next_elem = tag.next_element |
| .decompose() | 从树中删除当前标签及其内容。 | tag.decompose() |
| .unwrap() | 移除标签本身,只保留其子内容。 | tag.unwrap() |
| .insert() | 向标签内插入新标签或文本。 | tag.insert(0, new_tag) |
| .insert_before() | 在当前标签前插入新标签。 | tag.insert_before(new_tag) |
| .insert_after() | 在当前标签后插入新标签。 | tag.insert_after(new_tag) |
| .extract() | 删除标签并返回该标签。 | extracted_tag = tag.extract() |
| .replace_with() | 替换当前标签及其内容。 | tag.replace_with(new_tag) |
| .has_attr() | 检查标签是否有指定的属性。 | if tag.has_attr('href'): |
| .get() | 获取指定属性的值。 | href = tag.get('href') |
| .clear() | 清空标签的所有内容。 | tag.clear() |
| .encode() | 编码标签内容为字节流。 | encoded = tag.encode() |
| .is_empty_element | 检查标签是否是空元素(例如 <br>、<img> 等)。 | if tag.is_empty_element: |
| .is_ancestor_of() | 检查当前标签是否是指定标签的祖先元素。 | if tag.is_ancestor_of(another_tag): |
| .is_descendant_of() | 检查当前标签是否是指定标签的后代元素。 | if tag.is_descendant_of(another_tag): |
2-其他属性
| 方法/属性 | 描述 | 示例 |
|---|---|---|
| .style | 获取标签的内联样式。 | style = tag['style'] |
| .id | 获取标签的 id 属性。 | id = tag['id'] |
| .class_ | 获取标签的 class 属性。 | class_name = tag['class'] |
| .string | 获取标签内部的字符串内容,忽略其他标签。 | content = tag.string |
| .parent | 获取标签的父元素。 | parent = tag.parent |
3-查找方法
| 方法/属性 | 描述 | 示例 |
|---|---|---|
| find_all(string) | 使用字符串查找匹配的标签。 | tag = soup.find_all('div', class_='container') |
| find_all(id) | 查找指定 id 的标签。 | tag = soup.find_all(id='main') |
| find_all(attrs) | 查找具有指定属性的标签。 | tag = soup.find_all(attrs={"href": "http://example.com"}) |
5-代码示例
1-网页搜索
import requests
from bs4 import BeautifulSoup# 使用 requests 获取网页内容
url = 'https://cn.bing.com/' # 抓取bing搜索引擎的网页内容
response = requests.get(url)# 使用 BeautifulSoup 解析网页-推荐使用 lxml 作为解析器(速度更快)
soup = BeautifulSoup(response.text, 'lxml') # 使用 lxml 解析器
# 解析网页内容 html.parser 解析器
# soup = BeautifulSoup(response.text, ‘html.parser’)
print(soup.prettify()) # 打印网页内容
2-网页标题
import requests
from bs4 import BeautifulSoup# 使用 requests 获取网页内容
url = 'https://cn.bing.com/' # 抓取bing搜索引擎的网页内容
# 发送HTTP请求获取网页内容
response = requests.get(url)
# 中文乱码问题
response.encoding = 'utf-8'
# 确保请求成功
if response.status_code == 200:# 使用 BeautifulSoup 解析网页-推荐使用 lxml 作为解析器(速度更快)soup = BeautifulSoup(response.text, 'lxml') # 使用 lxml 解析器print(soup.prettify()) # 打印网页内容# 查找<title>标签title_tag = soup.find('title')# 打印标题文本if title_tag:print(title_tag.get_text())else:print("未找到<title>标签")else:print('请求失败')
3-网页编码
import chardet
import requests
from bs4 import BeautifulSoup# 使用 requests 获取网页内容
url = 'https://cn.bing.com/' # 抓取bing搜索引擎的网页内容
# 发送HTTP请求获取网页内容
response = requests.get(url)
# 使用 chardet 自动检测编码
encoding = chardet.detect(response.content)['encoding']
print(encoding)
response.encoding = encoding
# 确保请求成功
if response.status_code == 200:# 使用 BeautifulSoup 解析网页-推荐使用 lxml 作为解析器(速度更快)soup = BeautifulSoup(response.text, 'lxml') # 使用 lxml 解析器print(soup.prettify()) # 打印网页内容# 查找<title>标签title_tag = soup.find('title')# 打印标题文本if title_tag:print(title_tag.get_text())else:print("未找到<title>标签")else:print('请求失败')
4-查询标签a
import requests
from bs4 import BeautifulSoup# 指定你想要获取标题的网站
url = 'https://www.baidu.com/' # 抓取百度搜索引擎的网页内容# 发送HTTP请求获取网页内容
response = requests.get(url)
# 中文乱码问题
response.encoding = 'utf-8'
# 使用 lxml 解析器
soup = BeautifulSoup(response.text, 'lxml')# 查找第一个a标签
first_link = soup.find('a')
print(first_link)
print("----------------------------")# 获取第一个 标签的 href 属性
first_link_url = first_link.get('href')
print(first_link_url)
print("----------------------------")# 获取第一个 标签的 文本 属性
first_link_text = first_link.text.strip()
print(first_link_text)
print("----------------------------")# 查找所有a标签
all_links = soup.find_all('a')
print(all_links)
5-查询标签p
import requests
from bs4 import BeautifulSoup# 指定你想要获取标题的网站
url = 'https://www.baidu.com/' # 抓取百度搜索引擎的网页内容# 发送HTTP请求获取网页内容
response = requests.get(url)
# 中文乱码问题
response.encoding = 'utf-8'
# 使用 lxml 解析器
soup = BeautifulSoup(response.text, 'lxml')# 获取第一个 标签中的文本内容
paragraph_text = soup.find('p').get_text()# 获取页面中所有文本内容
all_text = soup.get_text()
print(all_text)
6-查询父标签
import requests
from bs4 import BeautifulSoup# 指定你想要获取标题的网站
url = 'https://www.baidu.com/' # 抓取百度搜索引擎的网页内容# 发送HTTP请求获取网页内容
response = requests.get(url)
# 中文乱码问题
response.encoding = 'utf-8'
# 使用 lxml 解析器
soup = BeautifulSoup(response.text, 'lxml')# 查找第一个a标签
first_link = soup.find('a')
print(first_link)
print("----------------------------")# 获取第一个 标签的 href 属性
first_link_url = first_link.get('href')
print(first_link_url)
print("----------------------------")# 获取当前标签的父标签
parent_tag = first_link.parent
print(parent_tag.get_text())
7-查询div
import requests
from bs4 import BeautifulSoup# 指定你想要获取标题的网站
url = 'https://www.baidu.com/' # 抓取百度搜索引擎的网页内容# 发送HTTP请求获取网页内容
response = requests.get(url)
# 中文乱码问题
response.encoding = 'utf-8'
# 使用 lxml 解析器
soup = BeautifulSoup(response.text, 'lxml')# 查找第一个a标签
first_link = soup.find('a')
print(first_link)
print("----------------------------")# 查找所有 class="example-class" 的 <div> 标签
divs_with_class = soup.find_all('div', class_='example-class')
print(divs_with_class)
print("----------------------------")# 查找具有 id="su" 的 <p> 标签
unique_input = soup.find('input', id='su')
print(unique_input)
# 获取 input 输入框的值
input_value = unique_input['value']
print(input_value)
print("----------------------------")
8-查询CSS
import requests
from bs4 import BeautifulSoup# 指定你想要获取标题的网站
url = 'https://www.baidu.com/' # 抓取百度搜索引擎的网页内容# 发送HTTP请求获取网页内容
response = requests.get(url)
# 中文乱码问题
response.encoding = 'utf-8'
# 使用 lxml 解析器
soup = BeautifulSoup(response.text, 'lxml')# 查找第一个a标签
first_link = soup.find('a')
print(first_link)
print("----------------------------")# 使用CSS选择器-查找所有 class 为 'example' 的 <div> 标签
example_divs = soup.select('div.example')
print("----------------------------")# 使用CSS选择器-查找所有 <a> 标签中的 href 属性
links = soup.select('a[href]')
print(links)
print("----------------------------")# 使用CSS选择器-查找嵌套的 <div> 标签
nested_divs = soup.find_all('div', class_='nested')
for div in nested_divs:print(div.get_text())
9-更新网页
import requests
from bs4 import BeautifulSoup# 指定你想要获取标题的网站
url = 'https://www.baidu.com/' # 抓取百度搜索引擎的网页内容# 发送HTTP请求获取网页内容
response = requests.get(url)
# 中文乱码问题
response.encoding = 'utf-8'
# 使用 lxml 解析器
soup = BeautifulSoup(response.text, 'lxml')# 查找第一个a标签
first_link = soup.find('a')
print(first_link)
print("----------------------------")# 获取第一个 标签的 href 属性
first_link_url = first_link.get('href')
print(first_link_url)
# 修改第一个 标签的 href 属性
first_link['href'] = 'http://popyu.com'
# 再次打印标签的 href 属性
first_link_url = first_link.get('href')
print(first_link_url)
print("----------------------------")
10-转化网页
import requests
from bs4 import BeautifulSoup# 指定你想要获取标题的网站
url = 'https://www.baidu.com/' # 抓取百度搜索引擎的网页内容# 发送HTTP请求获取网页内容
response = requests.get(url)
# 中文乱码问题
response.encoding = 'utf-8'
# 使用 lxml 解析器
soup = BeautifulSoup(response.text, 'lxml')# 转换为字符串
html_str = str(soup)
print(html_str)
print("----------------------------")
11-lxml进行XPath查找
from lxml import etree# 定义 HTML 片段
html_content = '<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>'# 使用 lxml 的 HTML 解析器解析 HTML 内容
parser = etree.HTMLParser()
tree = etree.fromstring(html_content, parser)# 使用 XPath 表达式查找 <a> 标签,并提取其文本内容
a_tag = tree.xpath('//a[@class="mnav"]')
if a_tag:text = a_tag[0].textprint(text)
else:print("未找到匹配的 <a> 标签。")相关文章:
Python-04BeautifulSoup网络爬虫
2025-03-04-BeautifulSoup网络爬虫 记录BeautifulSoup网络爬虫的核心知识点 文章目录 2025-03-04-BeautifulSoup网络爬虫 [toc]1-参考网址2-学习要点3-核心知识点1. 安装2. 导入必要的库3. 发送 HTTP 请求4. 创建 BeautifulSoup 对象5. 解析 HTML 内容5.1 查找标签5.2 根据属性…...
芯科科技通过全新并发多协议SoC重新定义智能家居连接
MG26系列SoC现已全面供货,为开发人员提供最高性能和人工智能/机器学习功能 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB),日前宣…...
python-leetcode-零钱兑换 II
518. 零钱兑换 II - 力扣(LeetCode) 这个问题是 完全背包问题 的一个变体,可以使用 动态规划 来解决。我们定义 dp[i] 为凑成金额 i 的硬币组合数。 思路: 定义 DP 数组 设 dp[i] 表示凑成金额 i 的组合数,初始化 dp[…...
【RabbitMQ】Producer之TTL过期时间 - 基于AMQP 0-9-1
这篇文章和大家分享Producer发布消息时如何设置消息过期时间,包括队列级别和消息级别,还有如何设置队列的过期时间。 消息过期时间 给消息设置TTL,在超过TTL值后,消息就会变成dead message(死信)…...
演示汉字笔顺的工具
视频需要审核,还是gif比较方便,本来就不长。 给小学生辅导汉字笔顺的时候,先是发现“百度汉语”里面有很多类似的笔顺的动画,非常方便。但总是需要上网,而且百度上并不提供针对特定汉字的方便的检索途径,加…...
JVM简单了解
一、JVM概述 目录 一、JVM概述 1.jvm的作用 2.jvm的组成 2.1类加载 2.1.1加载 2.1.2链接 2.1.3初始化 2.1.4类加载器分类 2.1.5双亲委派机制 2.2运行时数据区 2.2.1程序计数器 2.2.2虚拟机栈 2.2.3本地方法栈 2.2.4java堆内存 2.2.5方法区 2.3本地方法库接口 …...
【CSS—前端快速入门】CSS 选择器
CSS 1. CSS介绍 1.1 什么是CSS? CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式; CSS 能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果;能够做到页面的样式和 结构分离; 1…...
【MYSQL数据库异常处理】执行SQL语句报超时异常
MYSQL执行SQL语句异常:The last packet successfully received from the server was 100,107 milliseconds ago. The last packet sent successfully to the server was 100,101 milliseconds ago. 这个错误表明 MySQL 服务器与 JDBC 连接之间的通信超时了。通常由…...
【Day9】make/makeFile如何让项目构建自动化起飞
【Day9】make/makeFile如何让项目构建自动化起飞 使用make命令编写makefile文件依赖管理增量构建makefile注释:#makefile其他语法 make/makefile递归式工作过程 在Linux中,项目自动化构建是指使用一系列工具和脚本来自动执行软件项目的编译、测试、打包和…...
【单片机】嵌入式系统的硬件与软件特性
嵌入式系统的软件结构 嵌入式系统的软件结构一般分为 不带操作系统(Bare Metal) 和 带操作系统(RTOS / Linux) 两种。不同的软件架构适用于不同的应用场景,如 简单控制系统、实时控制系统、物联网、工业自动化等。 嵌…...
C语言学习笔记-初阶(30)深入理解指针2
1. 数组名的理解 在上一个章节我们在使用指针访问数组的内容时,有这样的代码: int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0]; 这里我们使用 &arr[0] 的方式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址&…...
ROM修改进阶教程------修改安卓机型SELinux宽容的几种方式方法 以及第三方系统中如何关闭SELinux宽容
SELinux是一种强制访问控制安全机制,用于增强Linux系统的安全性。在某些情况下,可能需要对 SELinux 进行宽容设置,以满足特定的应用需求。当SELinux处于宽容模式时,系统允许违反安全策略的行为发生,但不会阻止这些行为,通常会在日志中记录这些违规事件。这与强制模式不同…...
亚马逊云科技Marketplace(中国区)上架专业服务产品, “云生态连接器”价值凸显
近日,由西云数据运营的亚马逊云科技Marketplace(中国区)正式支持专业服务产品。此次发布将大幅简化企业对云专业服务的采购流程,实现云软件从规划、部署到支持的全生命周期管理,同时也为合作伙伴提供了更多的销售机会。…...
【音视频】音频基础
一、音频基础 1.1 声音的物理性质 ——振动 声音是一种由物体振动引发的物理现象,如小提琴的弦声等。物体的振动使其四周空气的压强产生变化,这种忽强忽弱变化以波的形式向四周传播,当被人耳所接收时,我们就听见了声音。 1.2 声…...
策略模式的C++实现示例
核心思想 策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装在独立的类中,使得它们可以互相替换。策略模式让算法的变化独立于使用它的客户端,从而使得客户端可以根据需要动态切换算法,而不需要修改…...
本地部署pangolin获取谱系,从而达到预测新冠的流行趋势
步骤 1:安装Docker 注:此步骤忽略,可通过Docker官网对于文档进行安装,地址如下 Docker: Accelerated Container Application Developmenthttps://www.docker.com/ 步骤 2:拉取Pangolin镜像 docker pull staphb/pangolin:latest 步…...
【我的 PWN 学习手札】House of Emma
House of Emma 参考文献 第七届“湖湘杯” House _OF _Emma | 设计思路与解析-安全KER - 安全资讯平台 文章 - house of emma 心得体会 - 先知社区 前一篇博客【我的 PWN 学习手札】House of Kiwi-CSDN博客的利用手法有两个关键点,其一是利用__malloc_assert进入…...
4 Redis4 List命令类型讲解
Redis 列表(List)命令详解 1. Redis 列表(List)简介 Redis 列表(List)是一个简单的字符串列表,按照插入顺序排序。它可以用作 栈(Stack) 和 队列(Queue&…...
CentOS 7 安装 Redis6.2.6
获取资源、下载安装 Redis6.2.6 安装Redis6.2.6 上传到服务器或直接下载(wget http://download.redis.io/releases/redis-6.2.6.tar.gz)、再解压安装 tar -zxvf redis-6.2.6.tar.gz 进入redis解压目录 cd redis-6.2.6先编译 make再执行安装 make PREFI…...
数据库原理4
1.数据库中的数据通常可分为用户数据和系统数据两部分。用户数据是用户使用的数据;系统数据称为数据字典。 2.SQL语言的功能:数据查询;数据操纵;数据定义;数据操作;数据控制 3.对未提交更新的依赖&#x…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
