2011-07-25 11 views
3

次のスニペットを使用して、HTMLParserを使用してページ上のすべてのリンクを抽出しています。私はかなりの相対URLを取得します。たとえば、これらをドメインの絶対URLに変換するにはどうすればよいですか? www.exmaple.comHTMLParserを使用してページから絶対リンクを抽出します

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 

おかげ

答えて

7

あなたは、これはあなたが絶対的またはベースURLを与え、相対URLでそれに参加することができます

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

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

をしたいです。たとえそれらが重なっていても動作するはずです。

+1

私の答えは後退しましたが、これははるかに良い+1です – orlp

関連する問題