Регулярка с тегом <nobp>

The_Immortal

Новичок
Пользователь
Сен 9, 2020
6
0
1
Пытаюсь выдрать текст, используя рег. выражение, под тегом
HTML:
<nobr>
, который находится внутри определенной таблицы:

Python:
soup = BeautifulSoup(resArrow, 'lxml')

tbl = soup.find('tbl', id='maintbl')

for nobr in tbl.find_all('nobr', text=re.compile("MB")):

    # ничего не находится

Пример вывода содержимого одно из нужных тегов:

HTML:
<nobr>1895.35 MB<br/><a href="down.php?id=555"><b>2,55 tlm</b></a></nobr>



Python:
print (nobr.getText())
выдает:



В общем, ключевое "MB" есть, но почему-то в моей регулярке оно не подхватывается. Я уже пробовал и так:

Python:
for nobr in tbl.find_all('nobr', text=re.compile(".*MB.*")):
и эдак:

Python:
for nobr in tbl.find_all('nobr', text=re.compile("\d*.\d\d\s+MB")):

Да и просто указывал точную строку
Python:
for nobr in tbl.find_all('nobr', text="1895.35 MB2,55 tlm"):

Python:
for nobr in tbl.find_all('nobr', text="1895.35 MB"):
, но также ничего не находилось.


В чем может быть проблема?


Спасибо!


P.S. Понимаю, что вместо регулярки можно принимать все теги
HTML:
<nobr>
подряд и уже далее выполнять сравнение :
Python:
for nobr in tbl.find_all('nobr'):

    if "MB" in nobr.getText(): # так работает
, однако очень хочется разобраться в чём может быть проблема.
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
beautifulsoup-search-by-text-inside-a-tag
Твой тег содержит внутри другие теги, поэтому параметр text (который в последних версиях называется string) не знает, к чему конкретно он относится.
 
  • Мне нравится
Реакции: The_Immortal

The_Immortal

Новичок
Пользователь
Сен 9, 2020
6
0
1
Так а почему
Python:
nobr.getText()
нормально текст получает?
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Хз :)
 

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