使用BeautifulSoup从html表中提取值

2024-10-01 07:17:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用bs4从html表中提取一个值,但是该表的结构是:

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

我感兴趣的值是575,42,但是它没有要提取的bs4使用的id或其他标识符

我如何调用此值?还是用什么身份证


Tags: rightstylehtmlwidth结构classcolortd
3条回答

另一个解决方案

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

可以使用任何属性进行提取。例如,使用

class = "celda400"属性

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

你可以试试。我想,你可以理解:

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)

相关问题 更多 >