Извлечение значения из таблицы html с помощью BeautifulSoup - PullRequest
2 голосов
/ 23 апреля 2020

Я пытаюсь извлечь значение из таблицы html, используя bs4, однако структура таблицы имеет вид:

<td class="celda400" vAlign="center" align="right" width="100" bgColor="#DFEDFF" style="color:Black">
575,42
</td>

Интересующее меня значение 575,42, однако у него нет идентификатора или другого идентификатора, который будет использоваться bs4 для извлечения.

Как я могу вызвать это значение? Или под каким идентификатором?

Ответы [ 3 ]

1 голос
/ 23 апреля 2020

Вы можете попробовать это. Я думаю, вы можете понять это:

from bs4 import BeautifulSoup

html_doc = """
    <td class="celda400" vAlign="center" align="right" width="100" bgColor="#DFEDFF" style="color:Black">
    575,42
    </td>
    <td class="celda400" vAlign="center" align="right" width="100" bgColor="#DFEDFF" style="color:Black">
    875,42
    </td>
    """
soup = BeautifulSoup(html_doc, 'lxml')

all_td = soup.find_all('td', {'class':"celda400"})

for td in all_td:
    value = td.text.strip()
    print(value)

1 голос
/ 24 апреля 2020

Другое решение.

from simplified_scrapy import SimplifiedDoc,req,utils
html = '''
<td class="celda400" vAlign="center" align="right" width="100" bgColor="#DFEDFF" style="color:Black">
575,42
</td>
<td class="celda400" vAlign="center" align="right" width="100" bgColor="#DFEDFF" style="color:Black">
575,43
</td>
'''
doc = SimplifiedDoc(html)
texts = doc.selects('td.celda400').text
print (texts)

Результат:

['575,42', '575,43']

Вот еще несколько примеров. https://github.com/yiyedata/simplified-scrapy-demo/blob/master/doc_examples

1 голос
/ 23 апреля 2020

Вы можете использовать любые атрибуты для извлечения. Например, чтобы использовать атрибут

class = "celda400"

response.find('td', {'class':"celda400"}).string
...