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…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...

Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

SQL注入篇-sqlmap的配置和使用
在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...

CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?
在现代前端开发中,Utility-First (功能优先) CSS 框架已经成为主流。其中,Tailwind CSS 无疑是市场的领导者和标杆。然而,一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...

五、jmeter脚本参数化
目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...