Невозможно получить доступ к элементу во время совпадения SRE с использованием BeautifulSoup - PullRequest
0 голосов
/ 07 декабря 2018

Я очищаю страницу следующим образом:

s1 =bs4DerivativePage.find_all('table',class_='not-clickable zebra’) 

С выводом:

[<table class="not-clickable zebra" data-price-format="{price}" data-quote-detail="0" data-stream-id="723288" data-stream-quote-option="Standard">
 <tbody><tr>
 <td><strong>Stop loss-niveau</strong></td>
 <td>141,80447</td>
 <td class="align-left"><strong>Type</strong></td>
 <td>Turbo's</td>
 </tr>
 <tr>
 <td><strong>Financieringsniveau</strong></td>
 <td>135,05188</td>

Мне нужно получить значение из Financieringsniveau.Следующее дает соответствие:

finNiveau=re.search('Financieringsniveau’,LineIns1)

Однако мне нужно числовое значение 135,05188.Как это сделать?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Предполагая, что значение атрибута data-stream-id уникально (в сочетании с тегом table), вы можете использовать селекторы CSS и избегать re.Это быстрый метод поиска.

from bs4 import BeautifulSoup

html = '''
<table class="not-clickable zebra" data-price-format="{price}" data-quote-detail="0" data-stream-id="723288" data-stream-quote-option="Standard">
 <tbody><tr>
 <td><strong>Stop loss-niveau</strong></td>
 <td>141,80447</td>
 <td class="align-left"><strong>Type</strong></td>
 <td>Turbo's</td>
 </tr>
 <tr>
 <td><strong>Financieringsniveau</strong></td>
 <td>135,05188</td>
 '''

soup = BeautifulSoup(html, 'lxml')
print(soup.select_one('table[data-stream-id="723288"] td:nth-of-type(6)').text)
0 голосов
/ 07 декабря 2018

Вы можете использовать .findNext()

Пример:

from bs4 import BeautifulSoup

s = """<table class="not-clickable zebra" data-price-format="{price}" data-quote-detail="0" data-stream-id="723288" data-stream-quote-option="Standard">
 <tbody><tr>
 <td><strong>Stop loss-niveau</strong></td>
 <td>141,80447</td>
 <td class="align-left"><strong>Type</strong></td>
 <td>Turbo's</td>
 </tr>
 <tr>
 <td><strong>Financieringsniveau</strong></td>
 <td>135,05188</td></tr></tbody></table>"""

soup = BeautifulSoup(s, "html.parser")
print(soup.find(text="Financieringsniveau").findNext("td").text)  #Search using text and the use findNext

Выход:

135,05188
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...