【问题标题】:Python HTMLParser printing out blank linesPython HTMLParser 打印出空行
【发布时间】:2015-08-28 01:40:01
【问题描述】:

我正在使用 python 的 HTMLParser,但在打印空行时遇到了问题。

from HTMLParser import HTMLParser
import urllib2
class MyHTMLParser(HTMLParser):
def handle_data(self, data):
     print "Encountered some data  :", data

# instantiate the parser and fed it some HTML
url = 'http://www.ngccoin.com/price-guide/us/flying-eagle-cents-pscid-16-desig-ms'
req = urllib2.Request(url, headers={'User-Agent' :"Magic Browser"})
response = urllib2.urlopen(req)
html = response.read()

parser = MyHTMLParser()
parser.feed( html )

我的问题是当它到达数据部分时,它只会打印出新行以及实际数据。我的输出看起来很像:

Encountered some data  :

Encountered some data  : Official Grading Service of
Encountered some data  :

Encountered some data  :

Encountered some data  :

我应该如何让它只用一个新行来忽略这些行?

【问题讨论】:

    标签: python html-parsing


    【解决方案1】:

    只需用新行忽略这些行:

    def handle_data(self, data):
        if data == '\n':
            return
        print "Encountered some data  :", data
    

    或者,让它忽略任何只包含空格的数据:

    def handle_data(self, data):
        if not data.strip():
            return
        print "Encountered some data  :", data
    

    【讨论】:

    • 我最初试图忽略 \n 的任何内容,但没有成功,但 data.strip() 解决方案就像一个魅力。谢谢
    【解决方案2】:

    因为数据一次通过一行,数据需要这样聚合:

    def handle_data(self, data):
      self.cell += data
    

    然后在关闭标签中......

    def handle_endtag(self, tag):
      self.somevariable = self.cell.strip()
      self.cell = ''
    

    去掉末尾的换行符会保留数据的格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      相关资源
      最近更新 更多