Автоматически создавать действительные ссылки - PullRequest
1 голос
/ 03 января 2011

Я новичок в Python, поэтому, пожалуйста, потерпите меня :) 1001 *

Мне было интересно, есть ли в python встроенный способ добавления переменных к URL-адресам независимо от их структуры.

Я бы хотел, чтобы к URL-адресу была добавлена ​​переменная URL (test = 1), которая может иметь любую из следующих структур

http://www.aaa.com (будет просто добавить "/? test = 1") до конца

http://www.aaa.com/home (например, выше, просто добавьте "/? test = 1") к конец

http://www.aaa.com/?location=home (выяснил бы, что уже есть? используется и добавит & test = 1 к конец)

http://www.aaa.com/?location=home&page=1 (как показано выше, выяснил бы уже есть? используется, и добавит & test = 1 в конец)

Я был бы рад написать купол, чтобы сделать это сам, но если Python уже может каким-то образом это сделать, я был бы более чем рад использовать любую встроенную функциональность, которая бы сэкономила мне время; -)

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 03 января 2011

Используя оба предложения Lennart Regebro и Adam Vendenberg , вы можете сделать что-то вроде этого:

import urllib
import urlparse

query=urllib.urlencode({"test":1})
urls=['http://www.aaa.com',
      'http://www.aaa.com/home',
      'http://www.aaa.com/?location=home',
      'http://www.aaa.com/?location=home&page=1']
for url in urls:
    x=urlparse.urlparse(url)
    new_query=(x.query+'&'+query) if x.query else query
    y=urlparse.urlunparse((x.scheme,x.netloc,x.path,x.params,new_query,x.fragment))
    print(y)

выходы

http://www.aaa.com?test=1
http://www.aaa.com/home?test=1
http://www.aaa.com/?location=home&test=1
http://www.aaa.com/?location=home&page=1&test=1
1 голос
/ 03 января 2011

Да, библиотека urlparse (в Python 3 называется urllib.parse) может помочь вам в этом:

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

В частности, методы urlparse и urlunparse.

1 голос
/ 03 января 2011

Вы, вероятно, хотите что-то вроде urllib.urlencode: http://docs.python.org/library/urllib.html#urllib.urlencode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...