Pythonic URL Парсинг - PullRequest
       6

Pythonic URL Парсинг

0 голосов
/ 19 мая 2009

Есть несколько вопросов о том, как проанализировать URL в Python, этот вопрос о лучшем или наиболее Pythonic способе сделать это.

В моем разборе мне нужно 4 части: расположение в сети, первая часть URL, путь и части имени файла и строки запроса.

http://www.somesite.com/base/first/second/third/fourth/foo.html?abc=123

должен разобраться в:

netloc = 'www.somesite.com'
baseURL = 'base'
path = '/first/second/third/fourth/'
file = 'foo.html?abc=123'

Код ниже дает правильный результат, но есть ли лучший способ сделать это в Python?

url = "http://www.somesite.com/base/first/second/third/fourth/foo.html?abc=123"

file=  url.rpartition('/')[2]
netloc = urlparse(url)[1]
pathParts = path.split('/')
baseURL = pathParts[1]

partCount = len(pathParts) - 1

path = "/"
for i in range(2, partCount):
    path += pathParts[i] + "/"


print 'baseURL= ' + baseURL
print 'path= ' + path
print 'file= ' + file
print 'netloc= ' + netloc

Ответы [ 2 ]

6 голосов
/ 19 мая 2009

Поскольку ваши требования к тем частям, которые вы хотите, отличаются от того, что дает вам urlparse, это так же хорошо, как и то, что вы получите. Вы можете, однако, заменить это:

partCount = len(pathParts) - 1

path = "/"
for i in range(2, partCount):
    path += pathParts[i] + "/"

С этим:

path = '/'.join(pathParts[2:-1])
2 голосов
/ 19 мая 2009

Я был бы склонен начать с urlparse. Также вы можете использовать rsplit и параметр maxsplit split и rsplit, чтобы немного упростить задачу:

_, netloc, path, _, q, _ = urlparse(url)
_, base, path = path.split('/', 2) # 1st component will always be empty
path, file = path.rsplit('/', 1)
if q: file += '?' + q
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...