使用HTMLParser提取页面中的绝对链接

3 投票
1 回答
2964 浏览
提问于 2025-04-16 22:13

我正在使用下面的代码片段来提取页面上的所有链接,使用的是 HTMLParser。我得到了一些相对网址。请问我该如何把这些相对网址转换成绝对网址,比如 www.example.com 呢?

import htmllib, formatter
import urllib, htmllib, formatter

class LinksExtractor(htmllib.HTMLParser):

   def __init__(self, formatter):
      htmllib.HTMLParser.__init__(self, formatter)
      self.links = []

   def start_a(self, attrs):
      if len(attrs) > 0 :
         for attr in attrs :
            if attr[0] == "href":
                self.links.append(attr[1])

   def get_links(self):
      return self.links


format = formatter.NullFormatter()
htmlparser = LinksExtractor(format)

data = urllib.urlopen("http://cis.poly.edu/index.htm")
htmlparser.feed(data.read())
htmlparser.close()

links = htmlparser.get_links()
print links

谢谢

1 个回答

7

你想要

urlparse.urljoin(base, url[, allow_fragments])

http://docs.python.org/library/urlparse.html#urlparse.urljoin

这个功能可以让你输入一个完整的网址或者一个基础网址,然后把它和一个相对网址结合起来。即使它们有一些重叠的部分,这个方法也能正常工作。

撰写回答