Этот вопрос закрыт для ответов, так как повторяет вопрос Почему бот отправляет не полную ссылку?
@laimonsess

Что нужно сделать, чтобы бот отправлял абсолютную ссылку?

Суть заключается в том, что бот должен отправлять в ТГ канал - заглавие, описание и ссылку на пост с сайта.
Но вместо абсолютной ссылки на пост он отправляет относительную - /ru/post/342532/ (пример).
Уже пробывал с urljoin() и page.make_links_absolute(), но безрезультатно (возможно что-то не так делал).

Вот код парсера (без выше описанных функций).

spoiler

def parser(back_post_id):
    URL = "https://habr.com/ru/search/?q=python&target_type=posts&order=date"

    page = requests.get(URL)
    soup = BeautifulSoup(page.content, "html.parser")

    post = soup.find("article", class_="tm-articles-list__item", id=True)
    post_id = post["id"]
    
    if post_id != back_post_id:
        title = post.find("a", class_="tm-article-snippet__title-link").text.strip()
        description = post.find("p", class_="article-formatted-body article-formatted-body article-formatted-body_version-2")
        url = post.find("a", class_="tm-article-snippet__title-link", href=True)["href"]
        
        
        return f"{title}\n\n{description}\n\n{url}", post_id
    else:
        return None, post_id

  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
f"{title}\n\n{description}\n\n{url}"
если {url} подставляется как /ru/post/342532/
то очевидно дописать перед ним то чего не хватает
как то так
htpps://habr.ru{url}
Ответ написан
Ответы на вопрос 1
@DmiDrok
Либо конкатенацией строк:
"https://habr.com" + "/ru/post/342532/"

Либо f-строкой:
server = "https://habr.com"
...f"{server}/ru/post/342532/"
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы