Найти - Пользователи
Полная версия: url сайта
Начало » Python для новичков » url сайта
1 2
Egor2010
А там вить
http://
и
https://
код одинаково работает?
PooH
terabayt
как говорил Кен Томпсон “Нельзя доверять коду, который ты не полностью создал сам”.
Никому нельзя доверять, даже себе(С)анекдот
terabayt
Я не говорю что нужно все писать самому, но зачем использовать библиотеку для того, что можно написать в одну строку?!
Ну во-первых это модуль стандартной библиотеки. Во-вторых от вашего велосипеда дурно пахнет, - что это за чудесные числа 9 и 10? Взяли заведомо больше чем длина схемы? Так у меня для вас плохие новости даже сейчас есть более длинные схемы
terabayt
это же программирование - искусство!, а не тупое заучивание функций библиотек!
вас кто-то обманул, программирование это обычная инженерная деятельность.

просто по роду деятельности приходится возится с кучей софта написанного таким образом, очень, очень весело: шаг влево, шаг вправо, чуть изменились условия и какой нибудь из велосипедов отказывает
dimy44
'{0}/{1}/{2}/'.format(*url.split('/'))
Egor2010
dimy44
спасибо большое!
всё отлично работает!
terabayt
PooH
Во-вторых от вашего велосипеда дурно пахнет, - что это за чудесные числа 9 и 10? Взяли заведомо больше чем длина схемы? Так у меня для вас плохие новости даже сейчас есть более длинные схемы
в примере было только https и не заведомо больше а с первого символа после https://
PooH
вас кто-то обманул, программирование это обычная инженерная деятельность.
возможно для вас да, но для меня это искусство. “Вместе с эволюцией социальных эстетических норм и оценок искусством получила право называться любая деятельность, направленная на создание эстетически-выразительных форм”
PooH
Во-вторых от вашего велосипеда дурно пахнет
я очень люблю по минимуму использовать ресурсы и если сказано (даны такие примеры) что строка начинается с https:// то не вижу надобности учитывать все возможные варианты и нагружать этим систему!
import time
t1 = time.time()
url="https://www.google.ru/#q=python"
for i in range(1000000):
    new_url = url[:url[9:].index('/')+10]
print (time.time()-t1 ) #0.7009713649749756
import time
t1 = time.time()
url="https://www.google.ru/#q=python"
for i in range(1000000):
    '{0}/{1}/{2}/'.format(*url.split('/'))
print (time.time()-t1 ) #1.2687904834747314
import time, urllib.parse
t1 = time.time()
url="https://www.google.ru/#q=python"
for i in range(1000000):
    urllib.parse.urlsplit(url).netloc
print (time.time()-t1 ) #2.5874969959259033
py.user.next
terabayt
зачем подключать модули, если можно одной строкой обойтись?
На них лежит ответственность за правильный разбор любой ссылки.

Ломаем твой код через девятку:
>>> url = "http://a/b/#q=python"
>>> new_url = url[:url[9:].index('/')+10]
>>> new_url
'http://a/b/

>>> url = "http://a/b#q=python"
>>> new_url = url[:url[9:].index('/')+10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
>>>

terabayt
зачем использовать библиотеку для того, что можно написать в одну строку?
Библиотечные функции проверены на всём множестве возможных данных.

>>> import urllib.parse
>>> 
>>> s = 'a://b/c/d?e=f#g'
>>> p = urllib.parse.urlsplit(s)
>>> p
SplitResult(scheme='a', netloc='b', path='/c/d', query='e=f', fragment='g')
>>> out = urllib.parse.urlunsplit((p.scheme, p.netloc, '', '', ''))
>>> out
'a://b'
>>>
terabayt
py.user.next
Ломаем твой код через девятку
но в примерах были только https, а о http ничего не было сказано.
вот, на все случаи:
new_url = url[:url.find('/', url.index('/')+2)+1]
>>> url = "http://google.com/#q=python"
>>> new_url = url[:url.find('/', url.index('/')+2)+1]
>>> print(new_url)
http://google.com/
>>> url = "https://google.com/#q=python"
>>> new_url = url[:url.find('/', url.index('/')+2)+1]
>>> print(new_url)
https://google.com/
>>> url = "htthdsfghdps://google.com/#q=python"
>>> new_url = url[:url.find('/', url.index('/')+2)+1]
>>> print(new_url)
htthdsfghdps://google.com/
>>> url = "a://b/c/d?e=f#g"
>>> new_url = url[:url.find('/', url.index('/')+2)+1]
>>> print(new_url)
a://b/
py.user.next
terabayt
вот, на все случаи:

>>> url = "http://google.com"
>>> new_url = url[:url.find('/', url.index('/')+2)+1]
>>> print(new_url)
 
>>>
terabayt
py.user.next
да, неудобно получилось )
new_url = (url+'/')[:url.find('/', url.index('/')+2)]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB