Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在子元素中不直接包含href属性的标记中查找字符串_Python_Html_Beautifulsoup - Fatal编程技术网

Python 在子元素中不直接包含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

我试图从标记h1、h2、h3、span和li中提取不包含href属性的所有文本。目标是只查找不是指向网站其他部分或场外url的超链接的字符串

下面是我想到的,但不幸的是,这也发现了那些具有包含href属性的子元素的标记

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和一些子标记中