Задать вопрос
@wanomgn

Парсим страницу. Как из относительного урла получить полный урл?

Приветствую
простейшая прога дергает определенный урл и выводит список встретившихся там урлов.
import urllib.parse
import requests
from lxml import html

response = requests.get('http://lenta.ru/')
parsed_body = html.fromstring(response.text)
for y in parsed_body.xpath("//a"):
    url=y.get("href")
    print(url)


Получаем примерно такое:
lenta.ru/rubrics/ww1
age.lenta.ru/generation
/rubrics/life/
/parts/text/
/parts/photo/

в данном примере 2 первых урла в полном виде а три последних в относительном.
как "красивше" получить все урлы в полном виде?
  • Вопрос задан
  • 2360 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя Валентин К ответам на вопрос (4)
vvpoloskin
@vvpoloskin
Инженер связи
Вариантов много, вот нативный код без импорта библиотек. baseurl должен быть в полном виде с указанием протокола.
def geturl(href, baseurl):
   domain = [i for i in baseurl.split('/') if i][1]
   proto = [i for i in baseurl.split('/') if i][0]
   protos = ['https://', 'http://', 'ftp://',]
   for i in protos:
      if href.startswith(i):
          return href
   if href.startswith('/'):
      return proto + '://' + domain + href
   if baseurl.endswith('/'):
      return baseurl + href
   return '/'.join(baseurl.split('/')[:-1]) + url
Ответ написан
Комментировать