python - 使用 HTMLParser 从页面中提取绝对链接

标签 python html html-parsing

我使用以下代码片段通过 HTMLParser 提取页面上的所有链接。我得到了很多相对 URL。如何将这些转换为域的绝对 URL,例如www.exmaple.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

谢谢

最佳答案

你想要

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

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

这允许您提供绝对或基本 url,并将其与相对 url 连接。即使它们有重叠部分,它也应该起作用。

关于python - 使用 HTMLParser 从页面中提取绝对链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6816138/

相关文章:

python - django.db.utils.IntegrityError : null value in column "address" violates not-null constraint

python - 'if not data: break' 是什么意思?

java - 修复 Java 中的序列化 HTML

java - 在网络爬虫中解析 HTML

python - 抓取 html 表 - python

go - 使用goquery查找值包含空格的类

python - 在 python 列表中抓取唯一的元组,不管顺序如何

python - list.__str__ 反转

javascript - Jquery停止函数

javascript - 为什么 .getElementById ("name_val"+id).innerHTML 为空?