@DiZiNnEs
I love to program =)

Как спарсить contents внутри span?

Здравствуйте, не могу спарсить контент содержащий внутри .

spoiler
import requests
import json

from bs4 import BeautifulSoup
from textwrap import dedent

from cookie import headers


page = 'http://vk-sova.3w.kz/users/index?sort_key=lastlogin&t=d'


def parser_sova(headers, page):
    session = requests.Session()
    request = session.get(page, headers=headers)
    if request.status_code == 200:
        soup = BeautifulSoup(request.content, 'html.parser')
        for users in soup.find_all('tr'):
            date_time = users.select_one(':nth-child(4) span')
            name = users.select_one(':nth-child(3) a')
            ip = users.select_one(':nth-child(4) span')
            first_ip = ip['title'] if ip is not None else None
            print(dedent(f'''\
            --------------------------------------------------
                Full name : {name.string}
                Date / Time entry: {date_time.contents}
                IP from the last entry point: {first_ip}
            --------------------------------------------------
            '''))
    else:
        print('error')


if __name__ == '__main__':
    parser_sova(headers, page)
    # json_add()


Проблема в этой строке date_time = users.select_one(':nth-child(4) span')
она возвращает
<span title="145.255.168.186">Сегодня в 15:42</span>
а мне нужно лишь "Сегодня в 15:42", как мне получить контент ? .contents .string не помогают возвращают:
AttributeError: 'NoneType' object has no attribute 'contents'


Прошу помочь

update:
5e70b80b50b30037313404.png
  • Вопрос задан
  • 789 просмотров
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
date_time = users.select_one(':nth-child(4) span').text
date_time = users.select_one(':nth-child(4) span').getText()

Добавлено:
Либо используйте проверку на NoneType, либо в цикле for пропустите первый элемент, либо используйте конструкцию try...except
try:
	date_time = users.select_one(':nth-child(4) span').text
except:
	pass # Или date_time = '' - в зависимости от ситуации
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы