2012-05-16 8 views
2

Ад, привет! Я хочу обходить веб-страницу с помощью python, проблема связана с относительными путями, у меня есть следующие функции, которые нормализуют и делятивизуют URL-адреса на веб-странице, я не могу реализовать одну часть функции свертывания. Есть идеи? :Создание относительных путей абсолюта в python

def normalizeURL(url): 
    if url.startswith('http')==False: 
     url = "http://"+url 
    if url.startswith('http://www.')==False: 
     url = url[:7]+"www."+url[7:] 
    return url 

def deRelativizePath(url, path): 
    url = normalizeURL(url) 

    if path.startswith('http'): 
     return path 
    if path.startswith('/')==False: 
     if url.endswith('/'): 
      return url+path 
     else: 
      return url+"/"+path 
    else: 
     #this part is missing 

проблема: я не знаю, как получить главный URL, они могут быть в различных форматах:

http://www.example.com 
http://www.example.com/ 
http://www.sub.example.com 
http://www.sub.example.com/ 
http://www.example.com/folder1/file1 #from this I should extract http://www.example.com/ then add path 
... 
+0

В качестве дополнительной заметки я бы рекомендовал прочитать PEP8, чтобы соответствовать лучшим практикам в стиле кодирования. http://www.python.org/dev/peps/pep-0008/ – msvalkon

+0

Удивительно, большое спасибо за стиль кодирования – torayeff

ответ

4

Я рекомендую вам рассмотреть возможность использования urlparse.urljoin() для этого:

Построить полную ("абсолютный") URL путем объединения "базовый URL" (base) с другим URL (url). Неофициально это использует компоненты базового URL, в частности схему адресации, местоположение сети и (часть) пути, чтобы предоставить отсутствующие компоненты в относительном URL-адресе.

+0

, например. 'urljoin ('http://www.example.com/folder1/file1', '/ absolute-path')' – bossylobster

3

from urlparse import urlparse

А затем разобрать на соответствующие части.

Смежные вопросы