在 python 中使用包含换行符的表达式进行解析

parsing with expression including a newline in python

我试图解析一些 html 文件,我想在其中提取一些名为 "Total Cash" 的值,但是这些 html 有两种不同的形式:

  1. ...Total Cash (mrq):</td> <td class="yfnc_tabledata1">8.71B</td>...

  2. ...Total Cash (mrq):</td> <td class="yfnc_tabledata1">8.71B</td>...

解析第一个很容易,下面的代码给了我数字8.71B

source.split('Total Cash (mrq):</td> <td class="yfnc_tabledata1">')[1].split('</td>')[0]

但是,我不知道如何解析第二种形式,其中值和字符串 'Total Cash (mrq)' 在不同的两行中。有什么建议么?另外,大约有9000个html,每个文件包含大约1000行代码。

你可以像你提到的那样尝试这样的事情beautifulsoup

from bs4 import BeautifulSoup

html_doc = """
<td>Total Cash (mrq):</td>
<td class="yfnc_tabledata1">8.71B</td>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

td_head = soup.find(text="Total Cash (mrq):").parent
td_desired = td_head.find_next('td')

print td_desired.contents[0]

如果您需要获取所有元素,您可以尝试 find_all,使用类似这样的方法:

td_heads_content = soup.find_all(text="Total Cash (mrq):")
for elem in td_heads_content:
    td_head = elem.parent