Python:检查另一个方法中作为参数传递的变量的值?

2024-04-27 04:35:06 发布

您现在位置:Python中文网/ 问答频道 /正文

和我之前的问题有点关系。我正在制作一个简单的html解析器,以便在Python2.7中使用。我想有多种解析类型,即可以解析链接、脚本标记、图像等。我使用的是HTMLParser模块,所以我最初的想法是为我要解析的每一个东西创建一个单独的类。但这似乎相当愚蠢。有没有一种方法可以在不创建多个类的情况下完成这项工作?我对C比较熟悉,所以我想我只需要在init方法上传递一个参数来指定要解析的内容,就像在.Net中那样,但是我似乎做得不正确。它不起作用,只是看起来不太对劲。下面是当前的工作代码:我如何修改它,使之只拥有一个类,并且传递的参数指示要解析的HTML标记的类型?在

class LinksParser(HTMLParser):
  def __init__(self, url):
    HTMLParser.__init__(self)
    req = urllib2.urlopen(url)
    self.feed(req.read())

  def handle_starttag(self, tag, attrs):
    if tag !='a': return
    for name, value in attrs:
      print("Found Link --> [{0}]{1}".format(name, value))

Tags: 方法name标记selfurl类型参数关系
2条回答
class TagParser(HTMLParser):

    def __init__(self, url, tag):
        HTMLParser.__init__(self)
        self.tag = tag
        req = urllib2.urlopen(url)
        self.feed(req.read())

    def handle_starttag(self, tag, attrs):
        if tag != self.tag: return
        for name, value in attrs:
            print("Found Tag({2})  > [{0}]{1}".format(name, value, self.tag))

像这样:

class MyParser(HTMLParser):
    def __init__(self, url, tags):
        HTMLParser.__init__(self)
        self.tags = tags
        req = urllib2.urlopen(url)
        self.feed(req.read())

    def handle_starttag(self, tag, attrs):
        if tag not in self.tags: return
        for name, value in attrs:
            print("Found Tag  > [{0}]{1}".format(name, value))

用以下内容实例化类:

^{pr2}$

相关问题 更多 >