Python isinstance不能正确使用beautifulsoup(名称错误)

Python isinstance不能正确使用beautifulsoup(名称错误),python,beautifulsoup,nameerror,isinstance,Python,Beautifulsoup,Nameerror,Isinstance,我使用iInstance选择一些html标记并将它们传递给Beautifulsoup函数。问题是我不断地从应该是完全可执行的代码中得到名称错误 def horse_search(tag): return (tag.has_attr('href') and isinstance(tag.previous_element, span)) ... for tag in soup.find_all(horse_search): print (tag) NameError:未定

我使用iInstance选择一些html标记并将它们传递给Beautifulsoup函数。问题是我不断地从应该是完全可执行的代码中得到名称错误

def horse_search(tag):
    return (tag.has_attr('href') and isinstance(tag.previous_element, span))

...

for tag in soup.find_all(horse_search):
   print (tag)    
NameError:未定义全局名称“span”

此外,我还从Beautifulsoup文档中的示例代码中得到错误,该示例代码使用isinstance和tag.previous_元素

def surrounded_by_strings(tag):
    return (isinstance(tag.next_element, NavigableString)
            and isinstance(tag.previous_element, NavigableString))

for tag in soup.find_all(surrounded_by_strings):
    print tag.name
NameError:未定义全局名称NavigableString


有什么不对劲吗?谢谢

要查找所有具有跨度父项和href属性的锚,请执行以下操作:

for span in soup.find_all('span'):
    for a in span.find_all('a'):
        if a.has_attr('href'):
            print a['href']
然而,虽然这很好,但在大多数情况下,使用一些支持xpath的工具可能会更好,例如,使用lxml和xpath,您编写的代码看起来就像:

from lxml import etree
etree.parse(url, etree.HTMLParser()).xpath('//span/a/@href')

使用这些isinstance调用,您试图实现什么目标?另外,显示您的导入导入来自bs4导入组、导入请求、导入重新、导入时间和导入随机。我希望隔离包含我需要的字符串的标记。在所有标签中,我只需要几个,它们都是span标签的子标签。遗憾的是,这并不能回答什么可能是错误的问题-即,为什么在这里抛出名称错误。