Telegram parser. Не могу получить id из url, пишет None

Evgeny23

Новичок
Пользователь
Июл 8, 2021
3
0
1
Всем привет!
Пробую написать парсер для телеграм. На этом этапе я получаю все ссылки, заголовки, описание и дату публикации новости.
Однако почему-то при выводе (print()), в ссылке пишет только главный домен и не подставляет .get(), где по логике должен быть еще id новости.

Вот ссылка на новость на сайте, с которого парсер забирает https://profi.travel/news/51479/details
А вот ссылка, которую получаю (без id) https://profi.travel/None

Подскажите пожалуйста, кто видит ошибку.

Вот код, с которым работаю:

Python:
import requests
from bs4 import BeautifulSoup



def get_first_news():
    headers = {
        "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
    }

    url = "https://profi.travel/news"
    r = requests.get(url=url, headers=headers)

    soup = BeautifulSoup(r.text, "lxml")
    articles_cards = soup.find_all("div", class_="item-list-item") # сначала берем всю карточку новости

    for article in articles_cards:
        article_title = article.find("h5", class_="item-list-title").text.strip()
        article_desc = article.find("div", class_="item-list-description").text.strip()
        article_url = f'https://profi.travel/{article.get("href")}'
        article_date = article.find("span", class_="item-list-header-date").text.strip()

        article_id = article_url.split("news/")[-1]
        article_id = article_id[:5]

        print(f"{article_title} | {article_desc} | {article_url} | {article_date} | {article_id}")


get_first_news()
 

Evgeny23

Новичок
Пользователь
Июл 8, 2021
3
0
1
Проблему парсинга с этого ресурса так и не решил. Попробовал с другого сайта, получилось. Заметил, что в коде, который не решил, в "a href" нет "class". А на другом сайте есть класс и с классом парсить получилось.
Буду признателен, если подскажете, как парсить с такого сайта.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Подскажите пожалуйста, кто видит ошибку.
Ошибка в этой строке:
Python:
article_url = f'https://profi.travel/{article.get("href")}'
Так как href - это атрибут тега a, а не тега div (который находится в переменной article).
href из тега a можно получать например так
Python:
article_url = f'https://profi.travel{article.find("h5", class_="item-list-title").find("a").get("href")}'
 
  • Мне нравится
Реакции: Evgeny23

Evgeny23

Новичок
Пользователь
Июл 8, 2021
3
0
1
Ошибка в этой строке:
Python:
article_url = f'https://profi.travel/{article.get("href")}'
Так как href - это атрибут тега a, а не тега div (который находится в переменной article).
href из тега a можно получать например так
Python:
article_url = f'https://profi.travel{article.find("h5", class_="item-list-title").find("a").get("href")}'
Спасибо огромное?
 

Форум IT Специалистов