Python. Регулярные выражения. html

Всем здравствуйте! Пытаюсь сообразить следующее, но не получается. У меня есть вот такой html код:

<td data="2020-09-28T07:10:10Z">
    "   7 hr 21 min -  "
<\td>

И у каждого столбца 'data' меняется. Я хотел бы сделать поиск по регулярному выражению. Как я могу это сделать? Я пытался делать следующее:

soup = get_html('https://my-link.com')
table = soup.find('tr', id='jobs')
my_job = table.find_all('td', data=r'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z')

Но не получается, поэтому помогите пожалуйста. Тэгов 'td' там в данном случае много, но не у всех есть 'data'. Но Некоторые встречаются, где 'data="0"'


Ответы (1 шт):

Автор решения: ganz

Полагаю стоит использовать парсер xml либо модуль re:

Либо же, если использование bs4 обязательно то

data='''
<html><head><title>a title</title></head><body><td data="2020-09-28T07:10:10Z">
    "   7 hr 21 min -  "
<\td></body></html>
'''
import re
alist=re.findall('<td data=\"[A-Z0-9\-\:]*\">[\r\n\t\"\ \-A-z0-9]*<\\td>',data)
#['<td data="2020-09-28T07:10:10Z">\n    "   7 hr 21 min -  "\n<\td>']
import bs4, soupsieve
soup = bs4.BeautifulSoup (data, 'html.parser')
alist=soup.find_all(['td'])
for it in alist:
    if it.has_attr('data'):
        it
        '''
        <td data="2020-09-28T07:10:10Z">
    "   7 hr 21 min -  "
&lt;    d&gt;</td>
'''
    else:
        'not find'

Регулярка здесь составлена неудачно, но работает- не силён я в этом. По bs4 идёт поиск всех элементов, затем проверка наличия атрибута.

→ Ссылка