js提取指定网站内容(我想刮掉“财务报表注释”下的所有内容。我怎样才能做到这一点? )
优采云 发布时间: 2022-01-28 16:15js提取指定网站内容(我想刮掉“财务报表注释”下的所有内容。我怎样才能做到这一点?
)
我想刮掉“财务报表注释”下的所有内容。我怎样才能做到这一点?这是网页的链接:
这是屏幕截图:
“财务报表附注”下的每个项目都是由我单击链接生成的。我想获取每个项目的来源并对其进行解析,例如“重要会计政策摘要。
谢谢!
更新时间:2019-10-22
现在我的问题归结为如何从以下(即 r9、r10 等)中提取 ID。它是其中之一
s 其类 = "手风琴"。中有一个 href="#" 。
不是最好的代码。这就是我设法做到的方式:
lis = soup.select("li.accordion")
notes = [str(li) for li in lis if "menu_cat3" in str(li)]
ids = re.findall(r'id="(r\d+)"', notes[0])
解决方案
该页面根据该部分中 lis 的 ID 发出请求。采集 id,转换为大写并发出相同的请求。需要 bs4 4.7.1+
from bs4 import BeautifulSoup as bs
import requests
with requests.Session() as s:
s.headers = {'User-Agent':'Mozilla/5.0'}
r = s.get('https://www.sec.gov/cgi-bin/viewer?action=view&cik=320193&accession_number=0000320193-18-000145&xbrl_type=v#')
soup = bs(r.content, 'lxml')
urls = [f'https://www.sec.gov/Archives/edgar/data/320193/000032019318000145/{i["id"].upper()}.htm' for i in soup.select('li:has(#menu_cat3) .accordion')]
for url in urls:
r = s.get(url)
soup = bs(r.content, 'lxml')
print([i.text for i in soup.select('font')])