【问题标题】:How to collect the data of the HTMLParser in Python 3如何在 Python 3 中收集 HTMLParser 的数据
【发布时间】:2017-11-16 11:49:18
【问题描述】:

亲爱的,

我需要将下面 HTML 中的数据收集到一个字符串数组中

parser.feed( <table><tr><td><a href="https://rads.stackoverflow.com/amzn/click/com/B00JX1ZS5O" rel="nofollow noreferrer" target="_blank"><img src="https://images-na.ssl-images-amazon.com/images/I/41B39oDSGQL._SL160_.jpg" alt="Product Image" style='border:0'/></a></td><td><tr><td>List Price: <strike>$34.99</strike></td></tr><tr><td><b>Deal Price: $7.99</b></td></tr><tr><td>You Save: $2.00 (20%)</td></tr><tr><td>Sabrent 4-Port USB 3.0 Hub with Individual Power Switches and LEDs (HB-UM43)</td></tr><tr><td>Expires Jun 15, 2017</td></tr></td></tr></table>)

所以我使用了以下,但是

class MyHTMLParser(HTMLParser):

    def handle_data(self, data):
        self.Datacollected(data)
        return (data)
parser = MyHTMLParser() 
Collector=[]
Collector.append[parser.feed("HTML Code HERE")]

但它总是空的

【问题讨论】:

    标签: html python-3.x html-parsing


    【解决方案1】:

    feed 方法一次解析一个 HTML 元素,并将其交给handle_data 方法。 feed 的返回值是None,这就是你的列表为空的原因。如果要保留所有输入解析器的数据,则需要在__init__() 方法中添加一些数据结构,如list,将数据包含在handle_data 方法中,并实现另一种方法返回您的数据,例如:

    class MyHTMLParser(HTMLParser):
    
        def __init__(self, **kwargs, *args):
            self.d = []
            super().__init__()
    
        def handle_data(self, data):
            self.d.append(data)
            return (data)
    
        def return_data(self):
            return self.d
    
    collector=[] 
    parser = MyHTMLParser() 
    parser.feed("HTML Code HERE")
    collector.append(parser.return_data())
    

    【讨论】:

      猜你喜欢
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 2021-09-15
      • 2018-08-05
      • 2012-06-19
      相关资源
      最近更新 更多