Python 爬虫 – BeautifulSoup

作者: adm 分类: python 发布时间: 2024-11-12

Python 爬虫(Web Scraping)是指通过编写 Python 程序从互联网上自动提取信息的过程。

爬虫的基本流程通常包括发送 HTTP 请求获取网页内容、解析网页并提取数据,然后存储数据。

Python 的丰富生态使其成为开发爬虫的热门语言,特别是由于其强大的库支持。

一般来说,爬虫的流程可以分为以下几个步骤:

发送 HTTP 请求:爬虫通过 HTTP 请求从目标网站获取 HTML 页面,常用的库包括 requests。
解析 HTML 内容:获取 HTML 页面后,爬虫需要解析内容并提取数据,常用的库有 BeautifulSoup、lxml、Scrapy 等。
提取数据:通过定位 HTML 元素(如标签、属性、类名等)来提取所需的数据。
存储数据:将提取的数据存储到数据库、CSV 文件、JSON 文件等格式中,以便后续使用或分析。
本章节主要介绍 BeautifulSoup,它是一个用于解析 HTML 和 XML 文档的 Python 库,能够从网页中提取数据,常用于网页抓取和数据挖掘。

BeautifulSoup
BeautifulSoup 是一个用于从网页中提取数据的 Python 库,特别适用于解析 HTML 和 XML 文件。

BeautifulSoup 能够通过提供简单的 API 来提取和操作网页中的内容,非常适合用于网页抓取和数据提取的任务。

安装 BeautifulSoup
要使用 BeautifulSoup,需要安装 beautifulsoup4 和 lxml 或 html.parser(一个 HTML 解析器)。

我们可以使用 pip 来安装这些依赖:

pip install beautifulsoup4
pip install lxml # 推荐使用 lxml 作为解析器(速度更快)
如果你没有 lxml,可以使用 Python 内置的 html.parser 作为解析器。

基本用法
BeautifulSoup 用于解析 HTML 或 XML 数据,并提供了一些方法来导航、搜索和修改解析树。

BeautifulSoup 常见的操作包括查找标签、获取标签属性、提取文本等。

要使用 BeautifulSoup,需要先导入 BeautifulSoup,并将 HTML 页面加载到 BeautifulSoup 对象中。

通常,你会先用爬虫库(如 requests)获取网页内容:

实例
from bs4 import BeautifulSoup
import requests

# 使用 requests 获取网页内容
url = ‘https://cn.bing.com/’ # 抓取bing搜索引擎的网页内容
response = requests.get(url)

# 使用 BeautifulSoup 解析网页
soup = BeautifulSoup(response.text, ‘lxml’) # 使用 lxml 解析器
# 解析网页内容 html.parser 解析器
# soup = BeautifulSoup(response.text, ‘html.parser’)
获取网页标题:

实例
from bs4 import BeautifulSoup
import requests

# 指定你想要获取标题的网站
url = ‘https://cn.bing.com/’ # 抓取bing搜索引擎的网页内容

# 发送HTTP请求获取网页内容
response = requests.get(url)
# 中文乱码问题
response.encoding = ‘utf-8’
# 确保请求成功
if response.status_code == 200:
# 使用BeautifulSoup解析网页内容
soup = BeautifulSoup(response.text, ‘lxml’)

# 查找标签<br /> title_tag = soup.find(‘title’)</p> <p> # 打印标题文本<br /> if title_tag:<br /> print(title_tag.get_text())<br /> else:<br /> print(“未找到<title>标签”)<br /> else:<br /> print(“请求失败,状态码:”, response.status_code)<br /> 执行以上代码,输出标题为:</p> <p>搜索 – Microsoft 必应<br /> 中文乱码问题<br /> 使用 requests 库抓取中文网页时,可能会遇到编码问题,导致中文内容无法正确显示,为了确保能够正确抓取并显示中文网页,通常需要处理网页的字符编码。</p> <p>自动检测编码 requests 通常会自动根据响应头中的 Content-Type 来推测网页的编码,但有时可能不准确,此时可以使用 chardet 来自动检测编码。</p> <p>实例<br /> import requests</p> <p>url = ‘https://cn.bing.com/’<br /> response = requests.get(url)</p> <p># 使用 chardet 自动检测编码<br /> import chardet<br /> encoding = chardet.detect(response.content)[‘encoding’]<br /> print(encoding)<br /> response.encoding = encoding<br /> 执行以上代码,输出为:</p> <p>utf-8<br /> 如果你知道网页的编码(例如 utf-8 或 gbk),可以直接设置 response.encoding:</p> <p>response.encoding = ‘utf-8’ # 或者 ‘gbk’,根据实际情况选择<br /> 查找标签<br /> BeautifulSoup 提供了多种方法来查找网页中的标签,最常用的包括 find() 和 find_all()。</p> <p>find() 返回第一个匹配的标签<br /> find_all() 返回所有匹配的标签<br /> 实例<br /> from bs4 import BeautifulSoup<br /> import requests</p> <p># 指定你想要获取标题的网站<br /> url = ‘https://www.baidu.com/’ # 抓取bing搜索引擎的网页内容</p> <p># 发送HTTP请求获取网页内容<br /> response = requests.get(url)<br /> # 中文乱码问题<br /> response.encoding = ‘utf-8’</p> <p>soup = BeautifulSoup(response.text, ‘lxml’)</p> <p># 查找第一个 <a> 标签<br /> first_link = soup.find(‘a’)<br /> print(first_link)<br /> print(“—————————-“)</p> <p># 获取第一个 <a> 标签的 href 属性<br /> first_link_url = first_link.get(‘href’)<br /> print(first_link_url)<br /> print(“—————————-“)</p> <p># 查找所有 <a> 标签<br /> all_links = soup.find_all(‘a’)<br /> print(all_links)<br /> 输出结果类似如下:</p> <p><a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a><br /> —————————-<br /> http://news.baidu.com<br /> —————————-<br /> [<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>, <a class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a>, <a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>, <a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>,<br /> 获取标签的文本<br /> 通过 get_text() 方法,你可以提取标签中的文本内容:</p> <p>实例<br /> from bs4 import BeautifulSoup<br /> import requests</p> <p># 指定你想要获取标题的网站<br /> url = ‘https://www.baidu.com/’ # 抓取bing搜索引擎的网页内容</p> <p># 发送HTTP请求获取网页内容<br /> response = requests.get(url)<br /> # 中文乱码问题<br /> response.encoding = ‘utf-8’</p> <p>soup = BeautifulSoup(response.text, ‘lxml’)</p> <p># 获取第一个 </p> <p> 标签中的文本内容<br /> paragraph_text = soup.find(‘p’).get_text()</p> <p># 获取页面中所有文本内容<br /> all_text = soup.get_text()<br /> print(all_text)<br /> 输出结果类似如下:</p> <p> 百度一下,你就知道<br /> …<br /> 查找子标签和父标签<br /> 你可以通过 parent 和 children 属性访问标签的父标签和子标签:<br /> # 获取当前标签的父标签<br /> parent_tag = first_link.parent</p> <p># 获取当前标签的所有子标签<br /> children = first_link.children<br /> 实例<br /> from bs4 import BeautifulSoup<br /> import requests</p> <p># 指定你想要获取标题的网站<br /> url = ‘https://www.baidu.com/’ # 抓取bing搜索引擎的网页内容</p> <p># 发送HTTP请求获取网页内容<br /> response = requests.get(url)<br /> # 中文乱码问题<br /> response.encoding = ‘utf-8’</p> <p>soup = BeautifulSoup(response.text, ‘lxml’)</p> <p># 查找第一个 <a> 标签<br /> first_link = soup.find(‘a’)<br /> print(first_link)<br /> print(“—————————-“)</p> <p># 获取当前标签的父标签<br /> parent_tag = first_link.parent<br /> print(parent_tag.get_text())<br /> 输出结果类似如下:</p> <p><a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a><br /> —————————-<br /> 新闻 hao123 地图 视频 贴吧 登录 更多产品<br /> 查找具有特定属性的标签<br /> 你可以通过传递属性来查找具有特定属性的标签。</p> <p>例如,查找类名为 example-class 的所有 div 标签:</p> <p># 查找所有 class=”example-class” 的 </p> <div> 标签<br /> divs_with_class = soup.find_all(‘div’, class_=’example-class’)</p> <p># 查找具有 id=”unique-id” 的 </p> <p> 标签<br /> unique_paragraph = soup.find(‘p’, id=’unique-id’)<br /> 获取搜索按钮,id 为 su :</p> <p>实例<br /> from bs4 import BeautifulSoup<br /> import requests</p> <p># 指定你想要获取标题的网站<br /> url = ‘https://www.baidu.com/’ # 抓取bing搜索引擎的网页内容</p> <p># 发送HTTP请求获取网页内容<br /> response = requests.get(url)<br /> # 中文乱码问题<br /> response.encoding = ‘utf-8’</p> <p>soup = BeautifulSoup(response.text, ‘lxml’)</p> <p># 查找具有 id=”unique-id” 的 <input> 标签<br /> unique_input = soup.find(‘input’, id=’su’)</p> <p>input_value = unique_input[‘value’] # 获取 input 输入框的值</p> <p>print(input_value)<br /> 输出结果为:</p> <p>百度一下<br /> 高级用法<br /> CSS 选择器<br /> BeautifulSoup 也支持通过 CSS 选择器来查找标签。</p> <p>select() 方法允许使用类似 jQuery 的选择器语法来查找标签:</p> <p># 使用 CSS 选择器查找所有 class 为 ‘example’ 的 </p> <div> 标签<br /> example_divs = soup.select(‘div.example’)</p> <p># 查找所有 <a> 标签中的 href 属性<br /> links = soup.select(‘a[href]’)<br /> 处理嵌套标签<br /> BeautifulSoup 支持深度嵌套的 HTML 结构,你可以通过递归查找子标签来处理这些结构:</p> <p># 查找嵌套的 </p> <div> 标签<br /> nested_divs = soup.find_all(‘div’, class_=’nested’)<br /> for div in nested_divs:<br /> print(div.get_text())<br /> 修改网页内容<br /> BeautifulSoup 允许你修改 HTML 内容。</p> <p>我们可以修改标签的属性、文本或删除标签:</p> <p>实例<br /> # 修改第一个 <a> 标签的 href 属性<br /> first_link[‘href’] = ‘http://new-url.com’</p> <p># 修改第一个 </p> <p> 标签的文本内容<br /> first_paragraph = soup.find(‘p’)<br /> first_paragraph.string = ‘Updated content’</p> <p># 删除某个标签<br /> first_paragraph.decompose()<br /> 转换为字符串<br /> 你可以将解析的 BeautifulSoup 对象转换回 HTML 字符串:</p> <p># 转换为字符串<br /> html_str = str(soup)<br /> BeautifulSoup 属性与方法<br /> 以下是 BeautifulSoup 中常用的属性和方法:</p> <p>方法/属性 描述 示例<br /> BeautifulSoup() 用于解析 HTML 或 XML 文档并返回一个 BeautifulSoup 对象。 soup = BeautifulSoup(html_doc, ‘html.parser’)<br /> .prettify() 格式化并美化文档内容,生成结构化的字符串。 print(soup.prettify())<br /> .find() 查找第一个匹配的标签。 tag = soup.find(‘a’)<br /> .find_all() 查找所有匹配的标签,返回一个列表。 tags = soup.find_all(‘a’)<br /> .find_all_next() 查找当前标签后所有符合条件的标签。 tags = soup.find(‘div’).find_all_next(‘p’)<br /> .find_all_previous() 查找当前标签前所有符合条件的标签。 tags = soup.find(‘div’).find_all_previous(‘p’)<br /> .find_parent() 返回当前标签的父标签。 parent = tag.find_parent()<br /> .find_all_parents() 查找当前标签的所有父标签。 parents = tag.find_all_parents()<br /> .find_next_sibling() 查找当前标签的下一个兄弟标签。 next_sibling = tag.find_next_sibling()<br /> .find_previous_sibling() 查找当前标签的前一个兄弟标签。 prev_sibling = tag.find_previous_sibling()<br /> .parent 获取当前标签的父标签。 parent = tag.parent<br /> .next_sibling 获取当前标签的下一个兄弟标签。 next_sibling = tag.next_sibling<br /> .previous_sibling 获取当前标签的前一个兄弟标签。 prev_sibling = tag.previous_sibling<br /> .get_text() 提取标签内的文本内容,忽略所有HTML标签。 text = tag.get_text()<br /> .attrs 返回标签的所有属性,以字典形式表示。 href = tag.attrs[‘href’]<br /> .string 获取标签内的字符串内容。 string_content = tag.string<br /> .name 返回标签的名称。 tag_name = tag.name<br /> .contents 返回标签的所有子元素,以列表形式返回。 children = tag.contents<br /> .descendants 返回标签的所有后代元素,生成器形式。 for child in tag.descendants: print(child)<br /> .parent 获取当前标签的父标签。 parent = tag.parent<br /> .previous_element 获取当前标签的前一个元素(不包括文本)。 prev_elem = tag.previous_element<br /> .next_element 获取当前标签的下一个元素(不包括文本)。 next_elem = tag.next_element<br /> .decompose() 从树中删除当前标签及其内容。 tag.decompose()<br /> .unwrap() 移除标签本身,只保留其子内容。 tag.unwrap()<br /> .insert() 向标签内插入新标签或文本。 tag.insert(0, new_tag)<br /> .insert_before() 在当前标签前插入新标签。 tag.insert_before(new_tag)<br /> .insert_after() 在当前标签后插入新标签。 tag.insert_after(new_tag)<br /> .extract() 删除标签并返回该标签。 extracted_tag = tag.extract()<br /> .replace_with() 替换当前标签及其内容。 tag.replace_with(new_tag)<br /> .has_attr() 检查标签是否有指定的属性。 if tag.has_attr(‘href’):<br /> .get() 获取指定属性的值。 href = tag.get(‘href’)<br /> .clear() 清空标签的所有内容。 tag.clear()<br /> .encode() 编码标签内容为字节流。 encoded = tag.encode()<br /> .is_empty_element 检查标签是否是空元素(例如 <br />、<img> 等)。 if tag.is_empty_element:<br /> .is_ancestor_of() 检查当前标签是否是指定标签的祖先元素。 if tag.is_ancestor_of(another_tag):<br /> .is_descendant_of() 检查当前标签是否是指定标签的后代元素。 if tag.is_descendant_of(another_tag):<br /> 其他属性<br /> 方法/属性 描述 示例<br /> .style 获取标签的内联样式。 style = tag[‘style’]<br /> .id 获取标签的 id 属性。 id = tag[‘id’]<br /> .class_ 获取标签的 class 属性。 class_name = tag[‘class’]<br /> .string 获取标签内部的字符串内容,忽略其他标签。 content = tag.string<br /> .parent 获取标签的父元素。 parent = tag.parent<br /> 其他<br /> 方法/属性 描述 示例<br /> find_all(string) 使用字符串查找匹配的标签。 tag = soup.find_all(‘div’, class_=’container’)<br /> find_all(id) 查找指定 id 的标签。 tag = soup.find_all(id=’main’)<br /> find_all(attrs) 查找具有指定属性的标签。 tag = soup.find_all(attrs={“href”: “http://example.com”})</p> </div> <section class="view-tag"> <div class="pull-left"><i class="fas fa-tags"></i> </div> </section> <section class="support-author"> <p>如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!</p> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal"><i class="fas fa-gift"></i> 赞赏支持</button> </section> <section id="comments"> </section> </article> <section class="col-md-10 col-md-offset-1 clearfix"> <div class="read"> <div class="read-head"><i class="fas fa-book"></i> 更多阅读</div> <div class="read-list row"> <div class="col-md-6"> <ul> <li><a href="https://www.yinzhongnet.com/2367.html" target="_blank" >Scala 运算符</a></li> <li><a href="https://www.yinzhongnet.com/2368.html" target="_blank" >Scala IF...ELSE 语句</a></li> <li><a href="https://www.yinzhongnet.com/2369.html" target="_blank" >Scala 循环</a></li> <li><a href="https://www.yinzhongnet.com/2370.html" target="_blank" >Scala 方法与函数</a></li> <li><a href="https://www.yinzhongnet.com/2371.html" target="_blank" >Scala 闭包</a></li> <li><a href="https://www.yinzhongnet.com/2372.html" target="_blank" >Scala 字符串</a></li> <li><a href="https://www.yinzhongnet.com/2373.html" target="_blank" >Scala 数组</a></li> <li><a href="https://www.yinzhongnet.com/2374.html" target="_blank" >Scala Collection</a></li> <li><a href="https://www.yinzhongnet.com/2375.html" target="_blank" >Scala Iterator(迭代器)</a></li> <li><a href="https://www.yinzhongnet.com/2376.html" target="_blank" >Scala 类和对象</a></li> </ul> </div> <div class="col-md-6"> <ul> <li><a href="https://www.yinzhongnet.com/2509.html" title="Python pyecharts 模块">Python pyecharts 模块</a></li> <li><a href="https://www.yinzhongnet.com/606.html" title="java HttpClient操作工具类">java HttpClient操作工具类</a></li> <li><a href="https://www.yinzhongnet.com/1385.html" title="推荐Go语言库,加速您的项目开发进程三">推荐Go语言库,加速您的项目开发进程三</a></li> <li><a href="https://www.yinzhongnet.com/1550.html" title="Go语言文件锁操作">Go语言文件锁操作</a></li> <li><a href="https://www.yinzhongnet.com/1376.html" title="express+svg-captcha验证码实现及验证">express+svg-captcha验证码实现及验证</a></li> <li><a href="https://www.yinzhongnet.com/1108.html" title="private static final long serialVersionUID = 1L详解">private static final long serialVersionUID = 1L详解</a></li> <li><a href="https://www.yinzhongnet.com/158.html" title="如何对新品牌和产品进行内容营销?">如何对新品牌和产品进行内容营销?</a></li> <li><a href="https://www.yinzhongnet.com/2538.html" title="PyTorch 基础">PyTorch 基础</a></li> <li><a href="https://www.yinzhongnet.com/1004.html" title="Java 设计模式之解释器模式">Java 设计模式之解释器模式</a></li> <li><a href="https://www.yinzhongnet.com/2197.html" title="Rust Slice(切片)类型">Rust Slice(切片)类型</a></li> </ul> </div> </div> </div> <div class="read"> <div class="read-head"><i class="fas fa-tags"></i> 标签云</div> <div class="read-list"> <a href="https://www.yinzhongnet.com/tag/c" class="tag-cloud-link tag-link-111 tag-link-position-1" style="color:#d89caa;font-size: 8.5185185185185pt;" aria-label="c (8个项目);">c</a> <a href="https://www.yinzhongnet.com/tag/docker" class="tag-cloud-link tag-link-95 tag-link-position-2" style="color:#7b1cc2;font-size: 10.177777777778pt;" aria-label="docker (12个项目);">docker</a> <a href="https://www.yinzhongnet.com/tag/excel" class="tag-cloud-link tag-link-51 tag-link-position-3" style="color:#ec5e89;font-size: 10.903703703704pt;" aria-label="excel (14个项目);">excel</a> <a href="https://www.yinzhongnet.com/tag/file" class="tag-cloud-link tag-link-148 tag-link-position-4" style="color:#6d407f;font-size: 10.177777777778pt;" aria-label="file (12个项目);">file</a> <a href="https://www.yinzhongnet.com/tag/flask" class="tag-cloud-link tag-link-215 tag-link-position-5" style="color:#9f194c;font-size: 10.592592592593pt;" aria-label="Flask (13个项目);">Flask</a> <a href="https://www.yinzhongnet.com/tag/gin" class="tag-cloud-link tag-link-59 tag-link-position-6" style="color:#aaded7;font-size: 11.940740740741pt;" aria-label="gin (18个项目);">gin</a> <a href="https://www.yinzhongnet.com/tag/golang" class="tag-cloud-link tag-link-58 tag-link-position-7" style="color:#557136;font-size: 22pt;" aria-label="golang (178个项目);">golang</a> <a href="https://www.yinzhongnet.com/tag/gorm" class="tag-cloud-link tag-link-64 tag-link-position-8" style="color:#4454f2;font-size: 10.592592592593pt;" aria-label="gorm (13个项目);">gorm</a> <a href="https://www.yinzhongnet.com/tag/grpc" class="tag-cloud-link tag-link-65 tag-link-position-9" style="color:#8da129;font-size: 13.288888888889pt;" aria-label="grpc (25个项目);">grpc</a> <a href="https://www.yinzhongnet.com/tag/io%e6%b5%81" class="tag-cloud-link tag-link-199 tag-link-position-10" style="color:#5979f1;font-size: 9.8666666666667pt;" aria-label="io流 (11个项目);">io流</a> <a href="https://www.yinzhongnet.com/tag/java" class="tag-cloud-link tag-link-26 tag-link-position-11" style="color:#2f6ffd;font-size: 21.17037037037pt;" aria-label="JAVA (146个项目);">JAVA</a> <a href="https://www.yinzhongnet.com/tag/linux" class="tag-cloud-link tag-link-108 tag-link-position-12" style="color:#3eee01;font-size: 8.5185185185185pt;" aria-label="linux (8个项目);">linux</a> <a href="https://www.yinzhongnet.com/tag/lua" class="tag-cloud-link tag-link-99 tag-link-position-13" style="color:#e68eff;font-size: 9.037037037037pt;" aria-label="lua (9个项目);">lua</a> <a href="https://www.yinzhongnet.com/tag/maven" class="tag-cloud-link tag-link-128 tag-link-position-14" style="color:#3b37f5;font-size: 8pt;" aria-label="maven (7个项目);">maven</a> <a href="https://www.yinzhongnet.com/tag/mongodb" class="tag-cloud-link tag-link-176 tag-link-position-15" style="color:#921269;font-size: 9.8666666666667pt;" aria-label="MongoDB (11个项目);">MongoDB</a> <a href="https://www.yinzhongnet.com/tag/mybatis" class="tag-cloud-link tag-link-23 tag-link-position-16" style="color:#dec6df;font-size: 13.496296296296pt;" aria-label="mybatis (26个项目);">mybatis</a> <a href="https://www.yinzhongnet.com/tag/mybatis-plus" class="tag-cloud-link tag-link-34 tag-link-position-17" style="color:#12c598;font-size: 13.185185185185pt;" aria-label="mybatis-plus (24个项目);">mybatis-plus</a> <a href="https://www.yinzhongnet.com/tag/mysql" class="tag-cloud-link tag-link-30 tag-link-position-18" style="color:#abdad;font-size: 11.940740740741pt;" aria-label="mysql (18个项目);">mysql</a> <a href="https://www.yinzhongnet.com/tag/nginx" class="tag-cloud-link tag-link-44 tag-link-position-19" style="color:#1022fe;font-size: 8pt;" aria-label="nginx (7个项目);">nginx</a> <a href="https://www.yinzhongnet.com/tag/node" class="tag-cloud-link tag-link-98 tag-link-position-20" style="color:#cc781a;font-size: 11.111111111111pt;" aria-label="node (15个项目);">node</a> <a href="https://www.yinzhongnet.com/tag/ollama" class="tag-cloud-link tag-link-219 tag-link-position-21" style="color:#4f4326;font-size: 9.4518518518519pt;" aria-label="Ollama (10个项目);">Ollama</a> <a href="https://www.yinzhongnet.com/tag/orm" class="tag-cloud-link tag-link-209 tag-link-position-22" style="color:#559bab;font-size: 8.5185185185185pt;" aria-label="orm (8个项目);">orm</a> <a href="https://www.yinzhongnet.com/tag/php" class="tag-cloud-link tag-link-104 tag-link-position-23" style="color:#9e86b5;font-size: 11.733333333333pt;" aria-label="php (17个项目);">php</a> <a href="https://www.yinzhongnet.com/tag/python" class="tag-cloud-link tag-link-178 tag-link-position-24" style="color:#2109c1;font-size: 11.733333333333pt;" aria-label="python (17个项目);">python</a> <a href="https://www.yinzhongnet.com/tag/pytorch" class="tag-cloud-link tag-link-217 tag-link-position-25" style="color:#c225af;font-size: 10.592592592593pt;" aria-label="PyTorch (13个项目);">PyTorch</a> <a href="https://www.yinzhongnet.com/tag/rabbitmq" class="tag-cloud-link tag-link-56 tag-link-position-26" style="color:#d4f6f2;font-size: 11.422222222222pt;" aria-label="RabbitMQ (16个项目);">RabbitMQ</a> <a href="https://www.yinzhongnet.com/tag/redis" class="tag-cloud-link tag-link-24 tag-link-position-27" style="color:#796701;font-size: 9.4518518518519pt;" aria-label="redis (10个项目);">redis</a> <a href="https://www.yinzhongnet.com/tag/rust" class="tag-cloud-link tag-link-204 tag-link-position-28" style="color:#5ad10b;font-size: 15.051851851852pt;" aria-label="rust (37个项目);">rust</a> <a href="https://www.yinzhongnet.com/tag/scala" class="tag-cloud-link tag-link-208 tag-link-position-29" style="color:#ded8c0;font-size: 12.148148148148pt;" aria-label="scala (19个项目);">scala</a> <a href="https://www.yinzhongnet.com/tag/sequelize" class="tag-cloud-link tag-link-85 tag-link-position-30" style="color:#be4897;font-size: 10.592592592593pt;" aria-label="sequelize (13个项目);">sequelize</a> <a href="https://www.yinzhongnet.com/tag/springboot" class="tag-cloud-link tag-link-20 tag-link-position-31" style="color:#615725;font-size: 16.192592592593pt;" aria-label="springboot (48个项目);">springboot</a> <a href="https://www.yinzhongnet.com/tag/spring-cloud" class="tag-cloud-link tag-link-46 tag-link-position-32" style="color:#8b4350;font-size: 8.5185185185185pt;" aria-label="spring cloud (8个项目);">spring cloud</a> <a href="https://www.yinzhongnet.com/tag/spring-cloud-alibaba" class="tag-cloud-link tag-link-47 tag-link-position-33" style="color:#bae048;font-size: 10.903703703704pt;" aria-label="Spring Cloud Alibaba (14个项目);">Spring Cloud Alibaba</a> <a href="https://www.yinzhongnet.com/tag/spring-security" class="tag-cloud-link tag-link-50 tag-link-position-34" style="color:#e31af3;font-size: 9.037037037037pt;" aria-label="spring security (9个项目);">spring security</a> <a href="https://www.yinzhongnet.com/tag/thinkphp" class="tag-cloud-link tag-link-114 tag-link-position-35" style="color:#1431cd;font-size: 9.4518518518519pt;" aria-label="thinkphp (10个项目);">thinkphp</a> <a href="https://www.yinzhongnet.com/tag/time" class="tag-cloud-link tag-link-101 tag-link-position-36" style="color:#1c6dc8;font-size: 10.177777777778pt;" aria-label="time (12个项目);">time</a> <a href="https://www.yinzhongnet.com/tag/uniapp" class="tag-cloud-link tag-link-140 tag-link-position-37" style="color:#2a7e08;font-size: 8pt;" aria-label="uniapp (7个项目);">uniapp</a> <a href="https://www.yinzhongnet.com/tag/vue" class="tag-cloud-link tag-link-124 tag-link-position-38" style="color:#31c030;font-size: 11.940740740741pt;" aria-label="vue (18个项目);">vue</a> <a href="https://www.yinzhongnet.com/tag/websocket" class="tag-cloud-link tag-link-119 tag-link-position-39" style="color:#cfa773;font-size: 8pt;" aria-label="websocket (7个项目);">websocket</a> <a href="https://www.yinzhongnet.com/tag/%e5%8f%8d%e5%b0%84" class="tag-cloud-link tag-link-70 tag-link-position-40" style="color:#d3bf4;font-size: 12.77037037037pt;" aria-label="反射 (22个项目);">反射</a> <a href="https://www.yinzhongnet.com/tag/%e5%a4%9a%e7%ba%bf%e7%a8%8b" class="tag-cloud-link tag-link-54 tag-link-position-41" style="color:#c9da8a;font-size: 8.5185185185185pt;" aria-label="多线程 (8个项目);">多线程</a> <a href="https://www.yinzhongnet.com/tag/%e5%b9%b6%e5%8f%91" class="tag-cloud-link tag-link-117 tag-link-position-42" style="color:#a66a6b;font-size: 12.77037037037pt;" aria-label="并发 (22个项目);">并发</a> <a href="https://www.yinzhongnet.com/tag/%e5%be%ae%e6%9c%8d%e5%8a%a1" class="tag-cloud-link tag-link-45 tag-link-position-43" style="color:#6db60c;font-size: 10.592592592593pt;" aria-label="微服务 (13个项目);">微服务</a> <a href="https://www.yinzhongnet.com/tag/%e6%b3%a8%e8%a7%a3" class="tag-cloud-link tag-link-94 tag-link-position-44" style="color:#22c975;font-size: 13.496296296296pt;" aria-label="注解 (26个项目);">注解</a> <a href="https://www.yinzhongnet.com/tag/%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f" class="tag-cloud-link tag-link-113 tag-link-position-45" style="color:#421392;font-size: 15.777777777778pt;" aria-label="设计模式 (44个项目);">设计模式</a> </div> </div> </section> </div> <!--modal--> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content single-dashang"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span>×</span></button> <h4 class="modal-title" id="myModalLabel"><i class="fas fa-gift"></i> 赞赏支持</h4> </div> <div class="modal-body text-center"> <p><img src="http://www.yinzhongnet.com/wp-content/themes/JieStyle-Two/images/AliPay.png"><img src="http://www.yinzhongnet.com/wp-content/themes/JieStyle-Two/images/WeixinPay.png"></p> <p>扫描二维码,输入您要赞赏的金额</p> <p>赞赏不用多,心意到了即可</p> </div> </div> </div> </div> <!--modal--> <div class="footer_search visible-xs visible-sm"> <form id="searchform" action="https://www.yinzhongnet.com"> <div class="input-group"> <input type="search" class="form-control" placeholder="搜索…" value="" name="s"> <span class="input-group-btn"><button class="btn btn-default" type="submit"><i class="fas fa-search"></i></button></span> </div> </form> </div> <footer id="footer"> <div class="copyright"> <p><i class="far fa-copyright"></i> 2011-2023 <b>银众网 | 心却以无所扰,只想换的半世逍遥。</b></p> <p> <a href="https://www.yinzan.cn/mall/" target="_blank">商城系统</a> <a href="https://www.yinzan.cn/knowledge/" target="_blank">知识付费系统</a> <a href="https://www.yinzan.cn/union/" target="_blank">异业联盟系统</a> </p> <p> <a href="http://beian.miit.gov.cn/" rel="nofollow" target="_blank">陕ICP备10001693号</a></p> </div> </footer> <script type="text/javascript" src="https://www.yinzhongnet.com/wp-content/themes/JieStyle-Two/js/jquery.min.js"></script> <script type="text/javascript" src="https://www.yinzhongnet.com/wp-content/themes/JieStyle-Two/js/jquery.gradientify.min.js"></script> <script type="text/javascript" src="https://www.yinzhongnet.com/wp-content/themes/JieStyle-Two/js/bootstrap.min.js"></script> <script type="text/javascript" src="https://www.yinzhongnet.com/wp-content/themes/JieStyle-Two/js/skel.min.js"></script> <script type="text/javascript" src="https://www.yinzhongnet.com/wp-content/themes/JieStyle-Two/js/util.min.js"></script> <script type="text/javascript" src="https://www.yinzhongnet.com/wp-content/themes/JieStyle-Two/js/nav.js"></script> <script type='text/javascript' src='https://www.yinzhongnet.com/wp-includes/js/comment-reply.min.js?ver=5.9.10' id='comment-reply-js'></script> <script> $(function() { $('[data-toggle="tooltip"]').tooltip() }); </script> <script> $(document).ready(function() { $("#header").gradientify({ gradients: [ { start: [49,76,172], stop: [242,159,191] }, { start: [255,103,69], stop: [240,154,241] }, { start: [33,229,241], stop: [235,236,117] } ] }); }); </script> </body> </html>