r4khic
@r4khic
Начинающий кодер на python

Извлечение контента с помощью BeautifulSoup и Python?

Приветствую всех ! Парсю дату новостей с этого портала . Получаю дату в таком формате:"3 Сентября, 23:30 721".Мне нужно обрезать или как-то удалить лишний элемент 721.
Я для этого решил использовать функцию decompose()
Но загвоздка состоит в том что эти цифры 721 находятся внутри класса.
AGmIN.png
А как я понял из документации,функция decompose() удаляет только теги .Как можно с помощью функции decompose() удалить лишний тег span с своим классом?

Вот код который используется для парсинга даты:
тык
# < Собираем даты с страницы.
def get_item_datetime(item_page,datetime_rule,datetime1_rule):
    if item_page is None:
        return
    soup = BeautifulSoup(item_page, 'lxml')
    item_datetime = soup.find(datetime_rule[0],{datetime_rule[1]:datetime_rule[2]})
    if item_datetime is not None:
        item_datetime = soup.find(datetime_rule[0],{datetime_rule[1]:datetime_rule[2]})
        #item_datetime = dateparser.parse(item_datetime)
    else:
        if (len(datetime1_rule) == 3):
            item_datetime = soup.find(datetime1_rule[0],{datetime1_rule[1]:datetime1_rule[2]}).text
            #item_datetime = dateparser.parse(item_datetime)
        else:
            item_datetime = ''
    return item_datetime
  • Вопрос задан
  • 169 просмотров
Решения вопроса 1
kshnkvn
@kshnkvn Куратор тега Python
t.me/kshnkvn
Если вам так уж сильно хочется спарсить именно эту дату, а не нормальную, как я предложил тут, то что-бы парсить её без счетчика просмотров делайте это так:
>>> soup.find('div', {'class': 'nl__details nl__details_left'}).span.text
'3 Сентября, 23:30'

Но я вам настоятельно рекомендую парсить нормальную дату, что-бы избежать любых возможных проблем.
Если и этот вариант вам по какой-то причине не нравится и вы и дальше будете пытаться парсить дату в том виде, в котором она сейчас, то вам нужны регулярные выражения. Т.к. насколько я понимаю на сайте несколько типов отображения дат, то и регулярное выражение должно покрывать их все.
Можете зайти на regex101, в поле TEST STRING закиньте примеры ваших дат, а в REGULAR EXPRESSION пишите регулярное выражение, результат будете получать сразу и наглядно видеть в правильном направлении идёте, или нет. Вот тут можно посмотреть синтаксис регулярных выражений, сильно сложного ничего нет.

Ну и совсем упоротый вариант, отвечающий конкретно на ваш вопрос:
>>> date = '3 Сентября, 23:30 721'
>>> date = ' '.join(date.split(' ')[:-1])
>>> date
'3 Сентября, 23:30'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы