Python 在子元素中不直接包含href属性的标记中查找字符串
我试图从标记h1、h2、h3、span和li中提取不包含href属性的所有文本。目标是只查找不是指向网站其他部分或场外url的超链接的字符串 下面是我想到的,但不幸的是,这也发现了那些具有包含href属性的子元素的标记Python 在子元素中不直接包含href属性的标记中查找字符串,python,html,beautifulsoup,Python,Html,Beautifulsoup,我试图从标记h1、h2、h3、span和li中提取不包含href属性的所有文本。目标是只查找不是指向网站其他部分或场外url的超链接的字符串 下面是我想到的,但不幸的是,这也发现了那些具有包含href属性的子元素的标记 soup.find_all(["h1", "h2", "h3", "span", "li"], text=True) 网站示例 <h1 class="footer
soup.find_all(["h1", "h2", "h3", "span", "li"], text=True)
网站示例
<h1 class="footer_nav_title">POLICY</h4>
<ul class="footer_nav_items o-list-bare">
<li class="footer_nav_item"><a href="/pages/return-policy" style="color:">RETURN POLICY</a></li>
<li class="footer_nav_item"><a href="/pages/shipping-information" style="color:">SHIPPING INFORMATION</a></li>
<li class="footer_nav_item"><a href="/pages/terms-of-service" style="color:">TERMS OF SERVICE</a></li>
<li class="footer_nav_item"><a href="/pages/privacy-policy" style="color:">PRIVACY POLICY</a></li>
策略
在我的方法中,find_all()也会查找那些带有a元素和href的标记,但是我打算只查找
策略。如何避免同时查找这些href包含的标记?循环遍历每个标记,并在每个单独的标记中执行另一次搜索,如果其中包含“a”标记。如果否,则h1、h2、h2、span、li标记中的文本不是超链接,而是纯文本
for individual_tag in soup.find_all(["h1", "h2", "h3", "span", "li"], text=True):
if individual_tag.find('a') is None:
print(individual_tag)
我确信有更好的方法在给定的标记中查找非超链接文本,但看起来这样做很有效?不是真的。该主题介绍如何在direct标记中按属性查找。在我的例子中,href属性位于子标记中,或者它可能同时位于h1和一些子标记中