如何使用 BeautifulSoup 从 SEC N-Q 文档中提取 table

How to extract table from SEC N-Q doc using BeautifulSoup

(python 2.7, BeautifulSoup4)

我正在尝试从 SEC N-Q 文档中提取 table 内容。在此处示例 html:https://www.sec.gov/Archives/edgar/data/36405/000093247115006447/indexfunds_final.htm

该文件根本没有标签。我想搜索 'C. Futures Contract' 部分并寻找下一个 < table > 并提取 < tr > 中的内容。一份文档中也出现了多次 'C. Futures Contract'。

我尝试了以下代码,但没有任何结果。

import requests, re
from bs4 import BeautifulSoup
r = requests.get("https://www.sec.gov/Archives/edgar/data/36405/000093247115006447/indexfunds_final.htm")
futures = soup.find_all(re.compile('C. Futures Contract'))
print futures

[ ]

首先,如果您通过文本搜索,请使用 text 参数(从 bs 4.4.0 开始,该参数被命名为 string)。

除此之外,对于每个 futures 部分,使用 find_next() 查找下一个 table 元素。

工作代码:

import re

import requests
from bs4 import BeautifulSoup

response = requests.get("https://www.sec.gov/Archives/edgar/data/36405/000093247115006447/indexfunds_final.htm")
soup = BeautifulSoup(response.content)

futures = soup.find_all(text=re.compile('C. Futures Contract'))
for future in futures:
    for row in future.find_next("table").find_all("tr"):
        print [cell.get_text(strip=True) for cell in row.find_all("td")]