文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一文带您理解Selenium 和 BeautifulSoup:掌握数据抓取的核心技术

2024-11-29 18:11

关注

接下来,将探讨使用 Selenium、BeautifulSoup 和 HTML 结构进行网页抓取的基础知识。无论您是有抱负的数据科学家,还是只是想扩展您的技术技能,这些知识都将成为您网页抓取之旅的基础。

HTML:Web 的支柱

HTML(超文本标记语言)是创建网页的标准语言。它由一系列定义网站结构、布局和内容的元素组成。

这些元素由标签表示,例如

表示段落、

表示、 表示超链接。通过了解这些标签的组织方式,您可以识别在网页抓取过程中要提取的相关内容。

每个 HTML 文件都由构成其底层结构的几个基本组件组成。这些组件以嵌套的层次结构组织,文档的内容包含在这些标签中。

 
 
 
    您的页面 
 
 
     
 
  1. :此声明定义所使用的 HTML 文档类型和版本。它可帮助浏览器了解如何正确呈现页面。
  2. :这是页面的根元素,它包含文档的所有其他元素。
  3. :head 元素包含有关文档的元信息。
  4. :title元素指定网页的,显示在浏览器的栏或选项卡中。</li><li data-id="ld70c578-RNVP8cfF"><body>:body元素包含网页的实际内容,如文本、图像和多媒体。</li></ol><p>除了构成 HTML 文件基本结构的标签外,还有许多其他标签用于在网页上创建不同类型的内容。以下是您会遇到的一些最常见的 HTML 标签:</p><ol data-id="odd3d8fc-Lk019jYD" class="list-paddingleft-1"><li data-id="ld70c578-qJBG9M2M"><h1>至<h6>:这些是标签,用于在内容中创建和副。<h1>是最大和最重要的,而是<h6>最小和最不重要的。</li><li data-id="ld70c578-oRsqTEhT"><p>:段落标签用于创建文本段落。它会自动在段落前后添加边距,从而在文本块之间提供清晰的分隔。</li><li data-id="ld70c578-qENm1SNd"><a>:锚标记用于创建超链接,使用户可以在网页之间导航。该href属性指定链接的目标 URL。</li><li data-id="ld70c578-TZgEcnXc"><ul>和<ol>:这些标签分别用于创建无序列表(项目符号)和有序列表(编号)。列表中的每个项目都包含在一个<li>标签中。</li><li data-id="ld70c578-UimgS2hU"><div class="table_box"><table>:table 标签用于创建表格,以行和列的形式显示数据。它通常与其他标签(如<tr>(表格行)、<th>(表格)和<td>(表格数据单元格))一起使用。</li></ol><p>每个 HTML 元素可以具有各种属性,这些属性可提供附加信息或修改其行为。网页抓取中最常用的一些属性是class、id和href。和通常class都id用于定位和获取感兴趣的信息。href用于浏览不同的页面。</p><ul data-id="u738a58b-Y478i8YV"><li data-id="ld70c578-qnj3C7dB">class:该class属性允许您将一个或多个 CSS 类分配给 HTML 元素</li></ul><div><pre><code class="language-php"><code><p class="highlighted important" > 本段落class属性有两个类:“highlighted”和“important”。 </p></code></code></pre></div><ul data-id="u738a58b-4dCnAQPI"><li data-id="ld70c578-lFYhEDQA">id:该id属性用于唯一标识 HTML 文档中的元素。每个id值在整个文档中都必须是唯一的。</li></ul><div><pre><code class="language-php"><code><div id = "main-content" > 此div具有唯一ID:“main-content” 。</div></code></code></pre></div><ul data-id="u738a58b-c68TL1Cj"><li data-id="ld70c578-f79YQCXD">href:该href属性主要与 (anchor) 标签一起使用<a>,指定超链接的目标 URL。当用户点击链接时,浏览器将导航到指定的 URL。</li></ul><div><pre><code class="language-php"><code><a href= https://www.51cto.com/article/"https://www.baidu.com"> 访问百度 </a></code></code></pre></div><p>网络数据抓取主要有三种方式:</p><ol data-id="odd3d8fc-hYA5RkEQ" class="list-paddingleft-1"><li data-id="ld70c578-hNIHZsKT">静态抓取:这种方式仅解析 HTML,忽略 JavaScript。它不需要浏览器即可从服务器提取网页,获取的内容就是页面源代码中看到的静态部分。通过提供的 URL,您可以直接获取 HTML 结构进行剪切和解析。这也是它被称为“静态抓取”的原因——只需获取并处理服务器返回的静态页面内容。</li><li data-id="ld70c578-AwAOf1oI">API 抓取:如今很多网站的架构是 API + JS 的组合。通过分析页面结构,可以找到 API 地址和请求方法,直接向服务器发送请求,获取结构化的 JSON 数据。这种方式最为简便,因为返回的数据是格式化的json 或xml 数据。</li><li data-id="ld70c578-oY85cBaY">动态抓取:这种方式使用浏览器,可以读取通过 JavaScript 生成或修改的内容。简而言之,动态抓取模拟真实用户操作——像用户一样发送输入、改变页面或点击按钮。有时,还需要自动化浏览器操作来获取特定内容。对于此类任务,通常需要使用 Selenium WebDriver 来模拟用户行为。</li></ol><p>这三种方式各有优劣,选择哪种方式取决于目标网站的技术架构和防爬策略。</p><h2>使用 BeautifulSoup 进行静态网页抓取</h2><p>Beautifulsoup是一个使用 HTML/XML 解析器并将网页/html/xml 转换为标签、元素、属性和值的树的 Python 库。</p><h4>安装BeautifulSoup</h4><p>向想要抓取的网页的 URL 发送一个 HTTP GET 请求,服务器将返回包含 HTML 内容的响应,使用 Python 的 requests 库来请求;使用BeautifulSoup加载解析html。</p><div><pre><code class="language-php"><code>from bs4 import BeautifulSoup import requests url='https://bot.sannysoft.com/' html_content = requests.get(url).text soup = BeautifulSoup(html_content, "html") print(soup.prettify())</code></code></pre></div><p>可以通过 .find([element_tag]) 方法轻松从 HTML 结构中提取出我们感兴趣的内容——用于查找单个元素;如果有多个元素,可以使用 .findAll([element_tag]) 方法。</p><div><pre><code class="language-php"><code>table_ele=soup.find('table') tres=table_ele.findAll('tr') for tr in tres: tdes=tr.findAll('td') if len(tdes)>1: print(tdes[0].text,':',tdes[1].text)</code></code></pre></div><h2>使用 Selenium 进行动态网页抓取</h2><p>Selenium 用于自动化网页应用程序操作。它允许您像人类用户一样打开浏览器并执行任务,例如点击按钮和在网站上搜索特定信息。</p><p>安装Selenium和驱动,需要一个驱动程序来与浏览器进行交互。</p><ol data-id="odd3d8fc-U7XPUi1m" class="list-paddingleft-1"><li data-id="ld70c578-bPznYioD">安装 Selenium:在命令提示符或终端中运行以下命令:pip install selenium</li><li data-id="ld70c578-clVB1BXj">下载驱动程序:需要浏览器的驱动程序,让 Selenium 能够与浏览器交互。建议使用chrome,检查您的 Google Chrome 版本,然后在 https://developer.chrome.com/docs/chromedriver/downloads?hl=zh-cn下载对应的 Chromedriver。</li></ol><p>下面是一个简单的示例:</p><div><pre><code class="language-php"><code>import subprocess import threading from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By import time def openChrome(): cmd = '"C:\Program Files\Google\Chrome\Application\chrome.exe" ' \ '--remote-debugging-port=9222 ' \ '--user-data-dir="d:\selenium\ChromeProfile" ' \ ' --disable-popup-blocking --disable-gpu --safebrowsing-disable-download-protection ' sub_chrome_process = subprocess.Popen(cmd, shell=True) thread = threading.Thread(target=openChrome) thread.start() time.sleep(2) print(f"{openChrome =}") def getDriver(): chrome_options = Options() chrome_options.add_argument('--ignore-certificate-errors') chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Chrome(optinotallow=chrome_options) """params = { "behavior": "allow", "downloadPath": download_dir # 设置新的下载路径 } driver.execute_cdp_cmd("Page.setDownloadBehavior", params) driver.execute_cdp_cmd("Security.setIgnoreCertificateErrors", {"ignore": True})""" return driver driver =getDriver() driver.get("https://bot.sannysoft.com/") print("*"*50) table_ele=driver.find_element(By.TAG_NAME,"table") for tr_ele in table_ele.find_elements(By.TAG_NAME,"tr"): tdes_ele=tr_ele.find_elements(By.TAG_NAME,'td') if len(tdes_ele)>1: print(tdes_ele[0].text.replace('\n',''),":",tdes_ele[1].text) print("*"*50) scroll_step = 200 # 每次滚动的像素 pause_time = 0.3 # 每次滚动后的等待时间(秒) current_height = driver.execute_script("return document.body.scrollHeight") # 获取当前页面总高度 # 逐步向下滚动 for j in range(0, current_height, scroll_step): driver.execute_script(f"window.scrollBy(0, {scroll_step});") time.sleep(pause_time)</code></code></pre></div><p>这段代码的逻辑和步骤如下:</p><p>导入必要的库:</p><p>subprocess:用于在 Python 中启动新进程。</p><p>threading:用于创建和管理线程。</p><p>selenium.webdriver:用于与浏览器进行交互。</p><p>time:用于时间延迟。</p><p>定义 openChrome 函数:</p><p>构造一个命令行字符串 cmd,用于启动 Google Chrome 浏览器,并指定一些启动选项,注意开启远程模式:--remote-debugging-port=9222:开启远程调试,允许其他程序(如 Selenium)连接到这个端口。</p><p>使用 subprocess.Popen 启动 Chrome 浏览器进程。</p><p>创建并启动线程:</p><p>使用 threading.Thread 创建一个新线程,目标是运行 openChrome 函数。</p><p>启动该线程,并在启动后等待 2 秒,以确保 Chrome 浏览器启动完成。</p><p>定义 getDriver 函数:</p><p>创建一个 Options 对象,配置 Chrome 的启动选项。</p><p>添加忽略证书错误的选项:chrome_options.add_argument('--ignore-certificate-errors')。</p><p>设置调试地址,使 Selenium 能够连接到已启动的 Chrome 实例:chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")。</p><p>使用配置的选项创建 Chrome WebDriver 实例并返回。</p><p>获取 WebDriver:</p><p>调用 getDriver 函数获取 WebDriver 并访问指定的 URL(这里是一个示例网页 "https://bot.sannysoft.com/")。</p><p>打印表格数据:</p><p>使用 find_element 和 find_elements 方法找到网页中的 <div class="table_box"><table> 元素及其子元素 <tr> 和 <td>。</p><p>遍历表格的每一行,如果该行中有多个单元格(<td>),则打印第一个和第二个单元格的文本内容。</p><p>滚动页面:</p><p>设置每次滚动的像素和等待时间。</p><p>获取当前页面的总高度。</p><p>使用 execute_script 方法逐步向下滚动页面,直到达到页面底部。</p><p>通过这段代码,您可以实现自动化浏览器操作,抓取网页上的表格数据,并进行页面滚动,以获取更多信息。</p><p>特别注意的如果是直接打开的chrome 浏览器的话(driver =webdriver.Chrome()) ,WebDriver 标记为True,有较多的网站防爬取判断,被网站拦截掉,可以直接先开启远程模式打开chrome ,然后创建dirver连接到debuggerAddress 上驱动chrome 。</p><p>以下是实践过程中点滴总结:</p><ul data-id="u738a58b-YSCdBlO8"><li data-id="ld70c578-HiwhBfxT">网站数据爬取是全栈的技术活,需要了解HTTP、HTML、Python、Selenium、BeautifulSoup、正则表达式、验证码识别等。</li><li data-id="ld70c578-yi2yfHW6">从网站进行数据爬取和解析本质上可以理解网页的非格式化数据逆向为格式化数据的过程;不同完整需要不同的方式和策略,特别是网站防爬设置、流量控制,需要控制速率、模拟一些真人操作的一些行为。</li><li data-id="ld70c578-GhhnxDKp">内容的解析和格式化才是最具挑战性的工作,特别是解析文档类的数据,正则表达式的功底是需要的。</li></ul><p>网站数据爬取是一项全栈技术,涉及 HTTP、HTML、Python、Selenium、BeautifulSoup 和正则表达式等工具。成功抓取依赖于对网页结构的理解、绕过防爬机制及流量控制。解析与格式化是其中最具挑战的环节,特别是文档类数据的处理,需要扎实的正则表达式能力。</p></div><div class="readOriginal"><a href="https://mp.weixin.qq.com/s/0LJrSgYzE_DBcaKnsU_VUA" class="original">来源:新语数据故事汇</a><a href="/api/report.php?target=https://m.528045.com/article/f75d857763.html" class="complain"><span class="artM art_jinggao"></span>内容投诉</a></div><div class="myShow contentBtmshow"><div class="mzsming"><p class="mzsm_title">免责声明:</p><p>① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。 </p><p>② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341</p></div></div><div id="downloader-container" class="page-downloader-container"><div class="page-downloader-tip clear"><h2><span>软考中级</span>精品资料免费领 </h2><ul class="page-downloader-tip-list clear"><li><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAMAAAAPdrEwAAAAnFBMVEX/ZgD/+fH/1LX/r3n/ij3/izz/4Mn/yKH/l1D/pmn/y6X/17r/k0r/gi3/qW7/nVr/bw7/j0T/jkH/wpf/o2X/8eX/uIf/m1f/bAn/59P/chT/u4v/hTP/3ML/fyj/zan/0a//8OL/tYL/79//zqv/dxv/v5L/6NX/eR//n17/xJr/mVP/hzb/gy//fCX/eyL/483/dRj/6tn/gCvKDcjkAAACEklEQVR4nO2ZaXOCMBCGg1RQVMQD76Nqa61ae/3//9bdhA6EaUIiYRw7eb+47IQHJyS7m4U4WXnhgpTXE4NxaDcyAAYd2tMc+tEMGBWNePTZHJqQIIuOzTC7g0ETfqJNBl0zQg5+Ua5xNGPVCalXhIYpiSpCu6l5F2iPalgFOiMxutGoCu07TqtNrVUrG2h4xb4+eomuTQesuhiM+tJFH5hvDOZcjnZO2ftqqV+EXjBfCGYSfoXCMTroyQv19cB0C9A4RgdNhug65of/Ibo7tNAYHOnCB7VdoZp9/i4l9HWyaIu2aIu+Z/TY9zF9oRrioBpyiUAjFbBiHnK7RNqpIElgGOiLEhiXDBTQHebDIpxWzBLhGB30O/O9grkvQHd155pO8O4brJWc7OmvECifksKsLinMNmv+LrV13cutKyXdestYtEVbtEWXQs9mVaEhJc6fqSWL13HAxuig1+haTsC67MRkEN/CU0B/Mh82F7ZSsuOwVKSOTs78WGTIT6S5QkQBPUv/NTQapeLaJipzHaKLNTvkZL4horZCptN5Ym5rQgV8XXb7LWPRFm3R/wadni65444JdCrs+lo0Xrosqo/EAV8o+LQjR6eXurLonLA9IESvCOlfjx7J0LgHi+ojsT7y6DiD3qNjQXf6wxXKkc+ZxxLnLf/gMqL1bRr5yn7qShVxCwKD6vF0MQHuND3uPfwANQcar49so8oAAAAASUVORK5CYII=" alt="" class="page-downloader-tip-item-icon"><span class="page-downloader-tip-item-title">历年真题</span><span class="page-downloader-tip-item-subtitle">答案解析</span></li><li><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAMAAAAPdrEwAAAAq1BMVEUZhf8AAAD///8Zhv9TpP8njf+Mwv/U6P+p0v82lP/G4f/i8P9EnP/x9/9vsv+42f/V6f+byv8ahf9hq/9So/8ZhP8Xhv8ZhP8Zhv8Xh/8kkv/F4P8ahP8cf/8Zhf8civ8Yhf8Zhf8ahf8Zhf8ahf8Vf/8Zhf8Yhv8ZhP8Sf/8Zhv8YhP8Yhf8ahf8Zhf8Zhf8Whf8Zhf8YhP8ZhP8Zh/8ZhP8gf/8Yg/8Zhv9PI83jAAAAOXRSTlP/AP+///////////////////+p//9bTMLpIQf/OxKHJXK7UPmWDJAqaA58VbKf888X8V+mSB8QgNRFi0VFAAAB2UlEQVR4nO3Z6Y6CMBQFYEBgQBH3fXd09n1//ycbsCVit7T0NpmJPb+U6Be4HBoIjnvMfrDcvDra6d4jrkTPn/XZQx5J+gYIdpwaQc/BZJLeXxqjd3AyQU8AZYLemqPvzNFdc3TN0udGJ/0w7PUDcDqJGh5KKwWl4wi7hzR8ONpvluUsHSg6JeB8KjB0QsueF0HQATkNlB4AfXIGj2nSLVSl45MR+7Ffx59DbbpTkpHWwhXUpi9KfUZbAvw10aTL8yha0eZMRJH2GWXGBwJJN1ApigOpa9InV+JhIsEMiC7vtefN0n5arIDaA2Fe5TB00TRGqKVVjQ5KtSbSpH6sRAtkxtqnQotkL9ahhTK9OinQQrnN+IM0LZQZq7U8Ld5n5t2IJC2UO+z7HDmakvFCmieiu6FAk3JeBz+sZwl7/DszGZraZ0bTqtH0nKFoxhkEolndgKFJOfKz8DqhRlc7g1J0tVmcBx2FWTgPF5q0gmrpP0bn1zWO4Jn5/zz+W9rSlra0peXo0WCBvlcOj/7WdPn0z60xeq0v8+hrI/R7vunFCL3ONw2N0B/5poepCfoTdX1lgMZvqsa7CTy9MPcq0x2Yo92hOdpdbYDoLUW707er0ZM2PF5+Ie4XoagbkMfsC8wAAAAASUVORK5CYII=" alt="" class="page-downloader-tip-item-icon"><span class="page-downloader-tip-item-title">备考技巧</span><span class="page-downloader-tip-item-subtitle">名师总结</span></li><li><img src="data:image/png;base64,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" alt="" class="page-downloader-tip-item-icon"><span class="page-downloader-tip-item-title">高频考点</span><span class="page-downloader-tip-item-subtitle">精准押题</span></li></ul><button type="button" lay-on="showLoginPopup" class="el-button page-downloader-tip-button analytics-el el-button--primary"><span>获取网盘下载链接 </span></button></div></div><div class="heigh10"></div><div class="layui-tab layui-tab-brief"><ul class="layui-tab-title"><li class="layui-this">资料下载</li><li>历年真题</li></ul><div class="layui-tab-content"><div class="layui-tab-item layui-show"><div class="ziliao-box-new"><ul><li><div class="ziliao-icon ziliao-icon-pdf"></div><div class="info"><div class="name"><a href="javascript:void(0);" lay-on="showLoginPopup">2024上半年软考中级软件测评师考试基础知识真题</a></div><p><span>193.9 KB</span><span>下载数265</span></p></div><button class="download-btn"><a style="color: white;" href="javascript:void(0);" lay-on="showLoginPopup">查看</a></button></li><li><div class="ziliao-icon ziliao-icon-pdf"></div><div class="info"><div class="name"><a href="javascript:void(0);" lay-on="showLoginPopup">2024上半年软考中级软件设计师考试基础知识真题</a></div><p><span>191.63 KB</span><span>下载数245</span></p></div><button class="download-btn"><a style="color: white;" href="javascript:void(0);" lay-on="showLoginPopup">查看</a></button></li><li><div class="ziliao-icon ziliao-icon-pdf"></div><div class="info"><div class="name"><a href="javascript:void(0);" lay-on="showLoginPopup">2023下半年-系统集成项目管理工程师-真题考点汇总(完整版)</a></div><p><span>143.91 KB</span><span>下载数1148</span></p></div><button class="download-btn"><a style="color: white;" href="javascript:void(0);" lay-on="showLoginPopup">查看</a></button></li><li><div class="ziliao-icon ziliao-icon-pdf"></div><div class="info"><div class="name"><a href="javascript:void(0);" lay-on="showLoginPopup">2023年下半年系统集成项目管理工程师第一、二、三批次真题考点整理(考友回忆版)</a></div><p><span>183.71 KB</span><span>下载数642</span></p></div><button class="download-btn"><a style="color: white;" href="javascript:void(0);" lay-on="showLoginPopup">查看</a></button></li><li><div class="ziliao-icon ziliao-icon-pdf"></div><div class="info"><div class="name"><a href="javascript:void(0);" lay-on="showLoginPopup">2023年上半年软考中级《系统集成项目管理工程师》-基础知识-考试真题及答案</a></div><p><span>644.84 KB</span><span>下载数2756</span></p></div><button class="download-btn"><a style="color: white;" href="javascript:void(0);" lay-on="showLoginPopup">查看</a></button></li></ul></div></div><div class="layui-tab-item"><div class="exam-box-new"><ul><li><p>2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)</p><div> 难度  <span></span><span></span><span></span><em></em><em></em>    813人已做 </div><a class="download-btn see-btn" href="javascript:void(0);" lay-on="showLoginPopup"> 查看 </a></li><li><p>【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析</p><div> 难度  <span></span><span></span><span></span><em></em><em></em>    354人已做 </div><a class="download-btn see-btn" href="javascript:void(0);" lay-on="showLoginPopup"> 查看 </a></li><li><p>【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析</p><div> 难度  <span></span><span></span><span></span><em></em><em></em>    318人已做 </div><a class="download-btn see-btn" href="javascript:void(0);" lay-on="showLoginPopup"> 查看 </a></li><li><p>2024年上半年软考高项第一、二批次真题考点汇总(完整版)</p><div> 难度  <span></span><span></span><span></span><em></em><em></em>    435人已做 </div><a class="download-btn see-btn" href="javascript:void(0);" lay-on="showLoginPopup"> 查看 </a></li><li><p>2024年上半年系统架构设计师考试综合知识真题</p><div> 难度  <span></span><span></span><span></span><em></em><em></em>    224人已做 </div><a class="download-btn see-btn" href="javascript:void(0);" lay-on="showLoginPopup"> 查看 </a></li></ul></div></div></div></div><div class="article_relate"><div class="relateTop"><h3>相关文章</h3><span class="intro">发现更多好内容</span></div><ul class="clearfix"><li><a href="https://m.528045.com/article/yn5cwcc557.html" title="如何在 Java 中实现对正方形的缩放操作?(如何在Java中对正方形进行缩放操作)">如何在 Java 中实现对正方形的缩放操作?(如何在Java中对正方形进行缩放操作)</a></li><li><a href="https://m.528045.com/article/ptxtq692z1.html" title="如何正确使用 Java 的 join 方法?(java join方法怎么使用)">如何正确使用 Java 的 join 方法?(java join方法怎么使用)</a></li><li><a href="https://m.528045.com/article/j4m6ktzet5.html" title="Java 中 DecimalFormat 在哪些场景下使用较为合适?(Java DecimalFormat在哪里使用合适)">Java 中 DecimalFormat 在哪些场景下使用较为合适?(Java DecimalFormat在哪里使用合适)</a></li><li><a href="https://m.528045.com/article/p51arh9g85.html" title="如何确保Redis客户端的安全性:实用技巧与最佳实践">如何确保Redis客户端的安全性:实用技巧与最佳实践</a></li><li><a href="https://m.528045.com/article/00aig75cy1.html" title="在 JavaScript 中如何使用 parentNode?(javascript中的parentNode怎么用)">在 JavaScript 中如何使用 parentNode?(javascript中的parentNode怎么用)</a></li><li><a href="https://m.528045.com/article/fjio5v9jtt.html" title="如何高效编码 Java Supplier 接口?(java supplier接口的高效编码技巧)">如何高效编码 Java Supplier 接口?(java supplier接口的高效编码技巧)</a></li><li><a href="https://m.528045.com/article/o8ecuc9wiv.html" title="如何进行 Java NoSQL 查询优化?(java nosql查询优化怎样进行)">如何进行 Java NoSQL 查询优化?(java nosql查询优化怎样进行)</a></li><li><a href="https://m.528045.com/article/3wsdsqfyal.html" title="Java 中 `equals()` 的核心究竟是什么?(java eques的核心是什么)">Java 中 `equals()` 的核心究竟是什么?(java eques的核心是什么)</a></li><li><a href="https://m.528045.com/article/i6jdl4h9n8.html" title="Java代理模式的优缺点分别有哪些?(Java代理模式有哪些优缺点)">Java代理模式的优缺点分别有哪些?(Java代理模式有哪些优缺点)</a></li><li><a href="https://m.528045.com/article/103bd86326.html" title="2024下半年北京软考成绩复查时间及流程">2024下半年北京软考成绩复查时间及流程</a></li></ul></div><div class="recommendArticle"><div class="title"><h3>猜你喜欢</h3><span class="intro">AI推送时光机</span></div><div class="list list_wrap"><div class="articleInfor "><a href="/article/f75d857763.html"><div class="topCon clearfix"><h3 class="tit" style="width: 100%!important;">一文带您理解Selenium 和 BeautifulSoup:掌握数据抓取的核心技术</h3></div></a><div class="info"><a href="https://m.528045.com/article/program-c4-1.html"><span class="icon icon_flag">后端开发</span></a><a href="/tag/Selenium/" title="Selenium" class="ren-summary-tag t" style="color: #fff!important;background-color: #958ef2;">Selenium</a><a href="/tag/HTTP/" title="HTTP" class="ren-summary-tag t" style="color: #fff!important;background-color: #9961dd;">HTTP</a><span class="time">2024-11-29</span></div></div></div></div><div class="breadNav"> 位置:<a class="LinkPath" href="http://m.528045.com/">首页</a>-<a class="LinkPath" href="https://m.528045.com/article/">资讯</a>-<a href="https://m.528045.com/article/program-c4-1.html">后端开发</a></div><div class="noMoreData"> 咦!没有更多了?去看看其它<a href="https://m.528045.com/">编程学习网</a> 内容吧 </div></div><div class="popCommon"></div><div class="btmNav"><a href="/" class="btmNavItem"><img src="https://static.528045.com/m/index.svg"><span class="name">首页</span></a><a href="/course/" class="btmNavItem"><img src="https://static.528045.com/m/wish.svg"><span class="name">课程</span></a><a href="/down/" class="btmNavItem"><div class="guide"></div><img class="pubImg" src="https://static.528045.com/m/btn_new.png"><span class="name">资料下载</span></a><a href="/ask/" class="btmNavItem"><img src="https://static.528045.com/m/msg.svg"><span class="name">问答</span><span class="num"></span></a><a href="/article/" class="btmNavItem btmMe on"><img src="https://static.528045.com/m/me_on.svg"><span class="name">资讯</span></a></div><script src="https://m.528045.com/static/layui/layui.js" type="text/javascript"></script><script src="https://m.528045.com/static/js/custom-script.js" type="text/javascript"></script><script src="https://m.528045.com/static/js/indexsms.js?v=20240108.1443"></script><script src="https://m.528045.com/static/skin/static/js/content.js"></script></body></html>