Извлечение абсолютных ссылок со страницы с помощью HTMLParser - PullRequest
3 голосов
/ 25 июля 2011

Я использую следующий фрагмент для извлечения всех ссылок на странице, используя 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

Спасибо

1 Ответ

7 голосов
/ 25 июля 2011

Вы хотите

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

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

Это позволяет вам указать абсолютный или базовый URL-адрес и объединить его с относительным URL-адресом.Даже если у них есть перекрывающиеся части, это должно сработать.

...