用 Python 解析 HTML

如何使用 Python 解析 HTML

这一次,我将教你如何使用三种流行的工具来解析 HTML:BeautifulSoup、lxml 和 html.parser。每种工具都有其独特的优势,我将向你展示如何充分利用每种工具。无论你是刚刚开始使用,还是希望提高自己的技能,这些工具都能让 HTML 解析变得简单而高效。让我们深入了解!

为什么要解析 HTML?

在深入了解工具和代码之前,我们先来了解一下为什么需要解析 HTML。当你访问一个网页时,你所看到的内容是用 HTML 标签构建的。这些标签定义了标题、段落、图像、链接和其他元素。如果想从网页中提取某些信息,如标题、产品价格或评论,就必须查看 HTML 结构来查找这些信息。然而,手动查看 HTML 可能会很乏味,尤其是对于大型或多个网页。这时,解析工具就派上用场了,它可以自动定位和提取所需的数据。

跳过手动解析

您可以通过选择搜索 API 或数据集提供商来满足您的所有数据需求,从而轻松跳过手动搜索。最好的网络数据提供商有

  1. Bright Data:功能强大的基于代理的刮擦功能,可满足复杂的需求。
  2. ScraperAPI:为不受保护的网站提供经济实惠的多语言支持。
  3. Oxylabs:高质量代理、基于人工智能的数据解析。

欲了解完整名单,请访问 我在文章中提到的顶级搜索 API.

用 Python 解析 HTML 的工具

Python 有几个库可以处理 HTML 解析。每个库都有自己的优势和用例。下面,我们将介绍三个常用的库:BeautifulSoup、lxml 和 html.parser。

BeautifulSoup

BeautifulSoup 是解析 HTML 和 XML 的最流行 Python 库之一。它简化了从网页中提取数据的过程,允许您快速浏览 HTML 结构并检索所需信息。

安装:

在使用 BeautifulSoup 之前,您需要安装它。您可以使用 Python 的软件包安装程序 pip 进行安装:

pip install beautifulsoup4

此外,BeautifulSoup 还经常与请求库配合使用,让您可以轻松地从网页中获取 HTML 内容:

pip install requests

如何使用 BeautifulSoup:

让我们从如何使用 BeautifulSoup 解析 HTML 的示例开始。在本例中,我们将提取一个网页的标题。

import requests
from bs4 import BeautifulSoup
# Fetch the HTML content of the webpage
url = "https://example.com"
response = requests.get(url)
# Parse the HTML content using BeautifulSoup
soup = BeautifulSoup(response.text、 "html.parser")
# Extract the title of the webpage
title = soup.title.text
print("Page Title:", title)

在此代码中

  • 我们使用 requests.get 获取网页的 HTML。
  • BeautifulSoup 用于解析 HTML 内容。
  • 然后,我们使用 soup.title 提取页面标题。

浏览 HTML 结构

解析 HTML 后,您可以使用 BeautifulSoup 提供的不同方法浏览 HTML。例如

  • soup.find 可以查找 HTML 标记的首次出现。
  • soup.find_all 返回特定标记所有出现次数的列表。

让我们看看如何提取所有链接 (<a> 标签):

links = soup.find_all('a')

为链接中的链接:

print(link.get(href))

这段代码将打印网页上的所有超链接(URL)。

lxml

lxml 库是另一个在 Python 中解析 HTML 和 XML 的强大工具。它以速度和准确性著称。如果对性能要求较高,lxml 可能是比 BeautifulSoup 更好的选择。

安装:

要安装 lxml,可以使用 pip:

pip install lxml

如何使用 lxml:

下面是一个如何使用 lxml 解析 HTML 的示例:

from lxml import html
import requests
# Fetch the HTML content
url = "https://example.com"
response = requests.get(url)
# Parse the HTML content using lxml
tree = html.fromstring(response.content)
# Extract the title of the webpage
title = tree.findtext('.//title')
print("Page Title:", title)

在这个例子中

  • 我们使用 lxml 中的 html 模块来解析网页内容。
  • findtext 函数可检索 标记内的文本。</li> </ul> <p id="1020" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph=""><strong class="nc hp">使用 lxml 的 XPath</strong></p> <p id="f0e2" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph="">XML 的主要功能之一是支持 XPath,这是一种用于查询 XML 和 HTML 文档的强大语言。与标准的基于标签的搜索相比,XPath 使您能更灵活地浏览 HTML 文档。</p> <p id="94c5" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph="">下面是一个如何使用 XPath 从网页中提取所有链接的示例:</p> <pre class="pf pg ph pi pj pk pl pm bp pn bb bk"><span id="6011" class="po nz ho pl b bg pp pq l pr ps" data-selectable-paragraph=""><span class="hljs-comment"># 使用 XPath 提取所有链接</span> links = tree.xpath(<span class="hljs-string">'//a/@href'</span>) <span class="hljs-keyword">for</span> link <span class="hljs-keyword">in</span> links: <span class="hljs-built_in">print</span>(link)</span></pre> <p id="ac32" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph="">该代码使用 XPath 表达式 //a/@href 查找所有的 <a> 标记,并提取其 href 属性(包含 URL)的值。</p> <h3 id="c90d" class="ny nz ho bf oa ob oc dy od oe of ea og nl oh oi oj np ok ol om nt on oo op oq bk">html.parser</h3> <p id="5dd5" class="pw-post-body-paragraph na nb ho nc b nd or nf ng nh os nj nk nl ot nn no np ou nr ns nt ov nv nw nx go bk" data-selectable-paragraph="">Python 内置的 html.parser 模块是解析 HTML 的另一种选择。虽然它可能不如 BeautifulSoup 或 lxml 那样快速或功能丰富,但仍然是完成基本任务的有效选择,而且由于它是 Python 标准库的一部分,因此不需要额外安装。</p> <p id="d8e7" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph=""><strong class="nc hp">如何使用 html.parser:</strong></p> <p id="a95d" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph="">下面是一个如何使用 html.parser 解析网页的示例:</p> <pre class="pf pg ph pi pj pk pl pm bp pn bb bk"><span id="af4f" class="po nz ho pl b bg pp pq l pr ps" data-selectable-paragraph=""><span class="hljs-keyword">from</span> html.parser <span class="hljs-keyword">import</span> HTML 解析器 <span class="hljs-keyword">class</span> <span class="hljs-title.class">MyHTMLParser</span>(<span class="hljs-title.class.inherited">HTML 解析器</span>): <span class="hljs-keyword">def</span> <span class="hljs-title.function">handle_starttag</span>(<span class="hljs-params">self、tag、attrs</span>): <span class="hljs-built_in">print</span>(<span class="hljs-string">"开始标记:"</span>标签) <span class="hljs-keyword">def</span> <span class="hljs-title.function">handle_endtag</span>(<span class="hljs-params">标签</span>): <span class="hljs-built_in">print</span>(<span class="hljs-string">"结束标记:"</span>标签) <span class="hljs-keyword">def</span> <span class="hljs-title.function">处理数据</span>(<span class="hljs-params">自我、数据</span>): <span class="hljs-built_in">print</span>(<span class="hljs-string">"数据:"</span>数据) <span class="hljs-comment"># 要解析的 HTML 示例</span> html_content = <span class="hljs-string">""" <html> <head><title>示例</title></head> <body><p>你好,世界</p></body> </html> """</span> <span class="hljs-comment"># 创建一个解析器实例并向其输入 HTML 内容</span> 解析器 = MyHTMLParser() parser.feed(html_content)</span></pre> <p id="cb3b" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph="">在这个例子中</p> <ul class=""> <li id="2e79" class="na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx pt ox oy bk" data-selectable-paragraph="">我们子类化 HTMLParser 来创建我们的自定义解析器。</li> <li id="ca0f" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph="">对 handle_starttag、handle_endtag 和 handle_data 方法进行了重载,以处理 HTML 内容的不同部分。</li> </ul> <p id="80e4" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph="">该解析器将输出有关开始标记、结束标记和标记之间数据的信息。</p> <h2 id="5953" class="ny nz ho bf oa ob oc dy od oe of ea og nl oh oi oj np ok ol om nt on oo op oq bk" data-selectable-paragraph="">图书馆比较</h2> <p id="ec40" class="pw-post-body-paragraph na nb ho nc b nd or nf ng nh os nj nk nl ot nn no np ou nr ns nt ov nv nw nx go bk" data-selectable-paragraph="">现在,我们已经了解了三种不同的 HTML 解析工具,让我们来比较一下它们,了解它们的优缺点。</p> <p id="1011" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph=""><strong class="nc hp">美丽汤</strong></p> <ul class=""> <li id="d368" class="na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx pt ox oy bk" data-selectable-paragraph=""><strong class="nc hp">易于使用:</strong> 它非常易于使用,即使是初学者也能轻松上手。</li> <li id="c21c" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph=""><strong class="nc hp">灵活性:</strong> 允许执行简单和复杂的解析任务。</li> <li id="dceb" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph=""><strong class="nc hp">性能:</strong> 速度不如 lxml 快,尤其是在处理大型文档时。</li> </ul> <p id="e02d" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph=""><strong class="nc hp">lxml:</strong></p> <ul class=""> <li id="d75d" class="na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx pt ox oy bk" data-selectable-paragraph=""><strong class="nc hp">速度</strong> 解析 HTML 最快的库之一。</li> <li id="22d0" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph=""><strong class="nc hp">准确性:</strong> 非常准确,尤其是在处理畸形 HTML 时。</li> <li id="79a6" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph=""><strong class="nc hp">XPath 支持:</strong> 允许使用 XPath 进行复杂查询。</li> </ul> <p id="cf53" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph=""><strong class="nc hp">html.parser:</strong></p> <ul class=""> <li id="1b71" class="na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx pt ox oy bk" data-selectable-paragraph=""><strong class="nc hp">内置式:</strong> 无需外部库,它自带 Python。</li> <li id="8a66" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph=""><strong class="nc hp">基本解析</strong> 适用于简单的解析任务,但缺乏 BeautifulSoup 和 lxml 的强大功能和灵活性。</li> </ul> <h2 id="9c69" class="ny nz ho bf oa ob oc dy od oe of ea og nl oh oi oj np ok ol om nt on oo op oq bk" data-selectable-paragraph="">选择正确的工具</h2> <p id="d522" class="pw-post-body-paragraph na nb ho nc b nd or nf ng nh os nj nk nl ot nn no np ou nr ns nt ov nv nw nx go bk" data-selectable-paragraph="">解析 HTML 的最佳工具取决于您的具体需求:</p> <ul class=""> <li id="5bf3" class="na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx pt ox oy bk" data-selectable-paragraph="">如果你需要快速、简单的工具,又不想安装额外的库,html.parser 是一个不错的选择。</li> <li id="ab5b" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph="">如果要处理大型复杂文档或需要高性能,lxml 可能是最佳选择。</li> <li id="8420" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph="">如果您正在寻找一个简单易用、功能多样、拥有广泛社区支持的图书馆,BeautifulSoup 是一个不错的选择。</li> </ul> <h2 id="f496" class="ny nz ho bf oa ob oc dy od oe of ea og nl oh oi oj np ok ol om nt on oo op oq bk" data-selectable-paragraph="">高级解析技术</h2> <p id="e2bf" class="pw-post-body-paragraph na nb ho nc b nd or nf ng nh os nj nk nl ot nn no np ou nr ns nt ov nv nw nx go bk" data-selectable-paragraph="">对于更高级的使用情况,您可能需要将这些库与其他工具结合起来。例如</p> <ul class=""> <li id="8269" class="na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx pt ox oy bk" data-selectable-paragraph="">您可以使用 BeautifulSoup 轻松浏览 HTML 结构,并将其与从动态网站获取数据的请求相结合。</li> <li id="1650" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph="">如果您需要与使用 JavaScript 加载内容的网站进行交互,可能需要使用 Selenium 或 Playwright 等工具首先渲染页面,然后解析 HTML。</li> </ul> <p id="c2ae" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph="">下面是一个将 BeautifulSoup 与 Selenium 结合使用以刮取动态内容的示例:</p> <pre class="pf pg ph pi pj pk pl pm bp pn bb bk"><span id="693c" class="po nz ho pl b bg pp pq l pr ps" data-selectable-paragraph=""><span class="hljs-keyword">from</span> selenium <span class="hljs-keyword">import</span> webdriver <span class="hljs-keyword">from</span> bs4 <span class="hljs-keyword">import</span> BeautifulSoup <span class="hljs-comment"># 设置 Selenium 驱动程序(确保已安装 ChromeDriver 等驱动程序)</span> driver = webdriver.Chrome() <span class="hljs-comment"># 打开网页</span> url = <span class="hljs-string">"https://example.com"</span> driver.get(url) <span class="hljs-comment"># 在 JavaScript 加载内容后获取页面源代码</span> html_content = driver.page_source <span class="hljs-comment"># 使用 BeautifulSoup 解析 HTML</span> soup = BeautifulSoup(html_content、 <span class="hljs-string">"html.parser"</span>) <span class="hljs-comment"># 提取标题</span> title = soup.title.text <span class="hljs-built_in">print</span>(<span class="hljs-string">"Page Title:"</span>, title) <span class="hljs-comment"># 关闭 Selenium 驱动程序</span> driver.quit()</span></pre> <p id="c753" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph="">在此代码中</p> <ul class=""> <li id="5c33" class="na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx pt ox oy bk" data-selectable-paragraph="">Selenium 用于打开网页并允许 JavaScript 执行。</li> <li id="7053" class="na nb ho nc b nd pa nf ng nh pb nj nk nl pc nn no np pd nr ns nt pe nv nw nx pt ox oy bk" data-selectable-paragraph="">BeautifulSoup 用于解析 HTML 内容并提取所需的数据。</li> </ul> <h2 id="2dcb" class="ny nz ho bf oa ob oc dy od oe of ea og nl oh oi oj np ok ol om nt on oo op oq bk" data-selectable-paragraph="">结论</h2> <p id="602e" class="pw-post-body-paragraph na nb ho nc b nd or nf ng nh os nj nk nl ot nn no np ou nr ns nt ov nv nw nx go bk" data-selectable-paragraph="">解析 HTML 是进行网络搜刮、数据提取或自动化项目时的一项重要技能。Python 提供了几个功能强大的库,如 BeautifulSoup、lxml 和 html.parser,它们使这项任务变得简单易行。您可以根据自己的项目需求,选择最适合自己的库。BeautifulSoup 非常适合初学者和快速项目,而 lxml 则为更复杂的任务提供了速度和强大的 XPath 支持。内置的 html.parser 适用于较简单的需求,以及想要避免外部依赖性的情况。</p> <p id="33a4" class="pw-post-body-paragraph na nb ho nc b nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx go bk" data-selectable-paragraph="">通过了解每种工具的优势和使用方法,您可以高效地解析 HTML 并从网页中提取所需的数据。</p> </div><!-- .entry-content --> <footer class="entry-footer"> </footer><!-- .entry-footer --> </div> </article><!-- #post-3285 --> <div class="entry-author entry-author-style-normal"> <div class="entry-author-profile author-profile vcard"> <div class="entry-author-avatar"> <img width="80" height="80" src="https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal-96x96.jpg" class="avatar avatar-80 photo" alt="" decoding="async" loading="lazy" srcset="https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal-96x96.jpg 96w, https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal-300x300.jpg 300w, https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal-1024x1024.jpg 1024w, https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal-150x150.jpg 150w, https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal-768x768.jpg 768w, https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal-1536x1536.jpg 1536w, https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal-24x24.jpg 24w, https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal-48x48.jpg 48w, https://www.data-journal.org/wp-content/uploads/2025/01/Data-Journal.jpg 2048w" sizes="auto, (max-width: 80px) 100vw, 80px" /> </div> <b class="entry-author-name author-name fn"><a href="https://www.data-journal.org/cn/author/datajournal/" title="由 Data Journal 发布" rel="author" data-no-translation-title="">数据期刊</a></b> <div class="entry-author-description author-bio"> <p># 网络数据与分析专家</p> <p>通过先进的抓取技术、道德数据收集和代理基础架构探索网络数据的秘密。凭借在数据工程和网络自动化方面多年的实践经验,我将深入探讨:</p> <p>- 网络抓取架构与最佳实践<br /> - 数据收集策略和方法<br /> - 代理解决方案和基础设施设计<br /> - 应用程序接口集成与开发<br /> - 实时数据分析与洞察</p> <p>我的使命是帮助企业和开发人员驾驭复杂的在线数据收集环境,将原始数据转化为可操作的增长战略和有意义的见解。</p> <p>在领先的技术出版物上大放异彩,因其数据收集专业知识和诚实实用的建议而深受行业专业人士的信赖。</p> </div> <div class="entry-author-follow author-follow"> </div><!--.author-follow--> </div> </div><!-- .entry-author --> <div class="entry-related alignfull entry-related-style-wide"> <div class="entry-related-inner content-container site-container"> <div class="entry-related-inner-content alignwide"> <h2 class="entry-related-title" data-no-translation="" data-trp-gettext="">类似文章</h2> <div class="entry-related-carousel kadence-slide-init splide" data-columns-xxl="3" data-columns-xl="3" data-columns-md="3" data-columns-sm="2" data-columns-xs="2" data-columns-ss="1" data-slider-anim-speed="400" data-slider-scroll="1" data-slider-dots="true" data-slider-arrows="true" data-slider-hover-pause="false" data-slider-auto="false" data-slider-speed="7000" data-slider-gutter="40" data-slider-loop="true" data-slider-next-label="下一步" data-slider-slide-label="文章" data-slider-prev-label="上一页" data-no-translation-data-slider-next-label="" data-no-translation-data-slider-slide-label="" data-no-translation-data-slider-prev-label=""> <div class="splide__track"> <div class="splide__list grid-cols grid-sm-col-2 grid-lg-col-3"> <div class="carousel-item splide__slide"> <article class="entry content-bg loop-entry post-3592 post type-post status-publish format-standard has-post-thumbnail hentry category-data-scraping"> <a class="post-thumbnail kadence-thumbnail-ratio-2-3" href="https://www.data-journal.org/cn/data-scraping/best-no-code-web-scrapers/"> <div class="post-thumbnail-inner"> <img width="768" height="384" src="https://www.data-journal.org/wp-content/uploads/2025/02/No-Code-Web-Scrapers-768x384.webp" class="attachment-medium_large size-medium_large wp-post-image" alt="无代码网络抓取器" decoding="async" loading="lazy" srcset="https://www.data-journal.org/wp-content/uploads/2025/02/No-Code-Web-Scrapers-768x384.webp 768w, https://www.data-journal.org/wp-content/uploads/2025/02/No-Code-Web-Scrapers-300x150.webp 300w, https://www.data-journal.org/wp-content/uploads/2025/02/No-Code-Web-Scrapers-1024x512.webp 1024w, https://www.data-journal.org/wp-content/uploads/2025/02/No-Code-Web-Scrapers-1536x768.webp 1536w, https://www.data-journal.org/wp-content/uploads/2025/02/No-Code-Web-Scrapers.webp 1600w" sizes="auto, (max-width: 768px) 100vw, 768px" /> </div> </a><!-- .post-thumbnail --> <div class="entry-content-wrap"> <header class="entry-header"> <div class="entry-taxonomies"> <span class="category-links term-links category-style-normal"> <a href="https://www.data-journal.org/cn/data-scraping/" rel="tag">网页数据爬取 & 大数据挖掘</a> </span> </div><!-- .entry-taxonomies --> <h3 class="entry-title"><a href="https://www.data-journal.org/cn/data-scraping/best-no-code-web-scrapers/" rel="bookmark">2025 年 7 大无代码网络抓取工具(经测试)</a></h3><div class="entry-meta entry-meta-divider-dot"> <span class="posted-by"><span class="meta-label" data-no-translation="" data-trp-gettext="">作者</span><span class="author vcard"><a class="url fn n" href="https://www.data-journal.org/">数据期刊</a></span></span> <span class="posted-on"> <time class="entry-date published updated" datetime="2025-02-07T01:15:57+00:00">2 月 7, 2025</time> </span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-summary"> <p>无代码网络刮擦工具是数据提取的救星。如果你不知道如何编写代码,它们就是完美的选择...</p> </div><!-- .entry-summary --> <footer class="entry-footer"> <div class="entry-actions"> <p class="more-link-wrap"> <a href="https://www.data-journal.org/cn/data-scraping/best-no-code-web-scrapers/" class="post-more-link"> 阅读更多<span class="screen-reader-text"> 2025 年 7 大无代码网络抓取工具(经测试)</span><span class="kadence-svg-iconset svg-baseline"><svg aria-hidden="true" class="kadence-svg-icon kadence-arrow-right-alt-svg" fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="27" height="28" viewbox="0 0 27 28"><title data-no-translation="" data-trp-gettext="">继续