为什么这个 Beautiful Soup 代码不能解析我要定位的文本?

Why won't this Beautiful Soup code parse the text I am targeting?

我正在尝试 select 此 10K 文件中的属性部分 header;一旦 select 从那里开始,我打算获取该部分中的文本(即属性和法律程序部分之间的所有文本 headers.

当我 运行 下面的代码时,我得到了 IndexError 'list index out of range' 但我不明白为什么因为 文本“PROPERTIES”似乎位于 'p' 标记内。我也尝试过使用 'id="ITEM_2_PROPERTIES"' 而不是 text= 但这也不起作用

我哪里错了?

import requests
from bs4 import BeautifulSoup


url = 'https://www.sec.gov/ix?doc=/Archives/edgar/data/1318605/000156459020004475/tsla-10k_20191231.htm'
soup = BeautifulSoup(requests.get(url).content, 'lxml')

properties_header = soup.find_all('p', text="PROPERTIES")[0]

print(properties_header)

这是因为您正在向 JS 呈现的网站发出请求,所以没有这样的 p 文本 PROPERTIES

但是,如果您更改目标 URL,则有一个:

import requests
from bs4 import BeautifulSoup


url = 'https://www.sec.gov/Archives/edgar/data/1318605/000156459020004475/tsla-10k_20191231.htm'
soup = BeautifulSoup(requests.get(url).content, 'lxml')

properties_header = soup.find_all('p', text="PROPERTIES")

print(properties_header)

输出:

[<p id="ITEM_2_PROPERTIES" style="margin-bottom:0pt;margin-top:0pt;font-weight:bold;font-style:normal;text-transform:none;font-variant: normal;font-family:Times New Roman;font-size:10pt;">PROPERTIES</p>]

我从开发人员工具中获得了新目标 URL。当您重新打开 JS 时会出现这种情况。所以,我猜你应该将 URL 作为你未来请求的目标。