Python:HTMLPasser如何处理来自子标记的数据

Python:HTMLPasser如何处理来自子标记的数据,python,html-parsing,overriding,Python,Html Parsing,Overriding,因此,在我感兴趣的URL的HTML文档中,我想要在每个页面上的信息不是由它周围的标记唯一定义的,而是由之前的标记定义的,也就是说,它看起来像 <div class="unique"> <span class="not unique> data I want to get </span> </div> 但它不起作用。为什么不将my starttag设置为具有class=“unique”的div标记中的任何span标记?这通常是如何实现的?通过执行以

因此,在我感兴趣的URL的HTML文档中,我想要在每个页面上的信息不是由它周围的标记唯一定义的,而是由之前的标记定义的,也就是说,它看起来像

<div class="unique">
<span class="not unique>
data I want to get
</span>
</div>

但它不起作用。为什么不将my starttag设置为具有class=“unique”的div标记中的任何span标记?这通常是如何实现的?

通过执行以下操作解决了此问题:

def handle_starttag(self, tag, attrs):
        self.inLink = False
        if tag == 'div':
            for name, value in attrs:
                if name == 'class' and value == 'unique':
                    self.inLinkReady = True
        if tag == 'span':
            if self.inLinkReady:
                self.inLink = True
                self.lasttag = tag
                self.inLinkReady = False

:)

这并不是对你问题的直接回答:由于各种原因,很少有人直接使用HTMLPasser类。我们大多数人使用一种或多种产品,包括BeautifulSoup、selenium、scrapy等。感谢您的洞察力——我对它的研究越多,我自己就越能看到这一点。我确实设法解决了这个问题,并在下面发布了答案。不客气。祝贺你,;不是每个人都能做到的。想象一下,现在所有的刮擦都是这样做的。
def handle_starttag(self, tag, attrs):
        self.inLink = False
        if tag == 'div':
            for name, value in attrs:
                if name == 'class' and value == 'unique':
                    self.inLinkReady = True
        if tag == 'span':
            if self.inLinkReady:
                self.inLink = True
                self.lasttag = tag
                self.inLinkReady = False