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 - "
< d></td>
'''
else:
'not find'
Регулярка здесь составлена неудачно, но работает- не силён я в этом. По bs4 идёт поиск всех элементов, затем проверка наличия атрибута.