在 python 中使用包含换行符的表达式进行解析
parsing with expression including a newline in python
我试图解析一些 html 文件,我想在其中提取一些名为 "Total Cash" 的值,但是这些 html 有两种不同的形式:
...Total Cash (mrq):</td> <td class="yfnc_tabledata1">8.71B</td>...
...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
我试图解析一些 html 文件,我想在其中提取一些名为 "Total Cash" 的值,但是这些 html 有两种不同的形式:
...Total Cash (mrq):</td> <td class="yfnc_tabledata1">8.71B</td>...
...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