我正在從這個站點抓取資料,我想在其中從Selected Filings部分下的可折疊內容中提取標簽超鏈接資料。在我的代碼中,我使用find_all() [divs] 和selected-filings-annualOrQuarterly的 [id]來首先選擇它們所在的 div。
from bs4 import BeautifulSoup
import requests
r = requests.get("https://www.sec.gov/edgar/browse/?CIK=0001084869", headers={'user-agent': 'Mozilla/5.0'}) soup = BeautifulSoup(r.content, 'html.parser')
print(r.status_code)
print(r.url)
for div_tag in soup.find_all('div', {"id" : "selected-filings-annualOrQuarterly"}):
print(div_tag)
for ul_tag in div_tag.find_all('ul'):
print(i)
for li_tag in ul_tag.find_all('li'):
print(li_tag)
for a_tag in li_tag.find_all('a', href=True):
print(a_tag)
這些是我得到的結果:
200
https://www.sec.gov/edgar/browse/?CIK=0001084869
-<div id="selected-filings-annualOrQuarterly"->
在過去的
<span id 中沒有該公司的 10-K/10-Q 檔案="selected-filings-annualOrQuarterly-days-old"-><-/span-> 天<-p> </p>
</div>
每當我運行上面的代碼時,我只會在 [div - id] 中獲取 [span] 元素,僅此而已。我真正想要的是獲取指定 [div] 元素中存在的所有鏈接(a 標簽),在 [li] [ul] 元素內。當我查看該網站的頁面來源時,一切都在那里。但是代碼甚至不回傳 [div] 中的 [ul] 和 [li] 標簽。好像他們是隱藏的。這是 a 標簽超鏈接的順序和位置。id(上面指定)> ul > li > a(要抓取的鏈接)
我預期的結果:
<a href='ix?doc=/Archives/edgar/data/1084869/000143774921025463/flws20210926_10q.htm'->
<a href='ix?doc=/Archives/edgar/data/1084869/0704040402010204040404040204020200404040404040404040404040404040404040404210202021000000 ->
根據找到的鏈接數量,回傳的鏈接數量會有所不同。我怎樣才能獲得上述位置內的超鏈接?
uj5u.com熱心網友回復:
當我查看該網站的頁面來源時
檢查員不是來源,那是修改后的頁面。來源是ctrl u,你會看到你的資料不在這里。
您想要的資料在 json 中,您可以在網路選項卡中看到:https : //data.sec.gov/submissions/CIK0001084869.json
我在評論中看到你也想要8-K表單,所以我重構了一些東西以使腳本更加通用。我添加了一個隨機 cik 來進行一些測驗。所有資料現在都在字典中
import requests
from collections import defaultdict
headers={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}
ciklist=['0001084869','0001856236']
search_forms=['10-Q', '10-K', '8-K', '8-K/A']
cik_data={}
for cik in ciklist:
data=requests.get(f'https://data.sec.gov/submissions/CIK{cik}.json', headers=headers).json()
base_url=f'https://sec.gov/ix?doc=/Archives/edgar/data/{cik[3:]}'
cik_data[cik]=defaultdict(list)
for i, form in enumerate(data['filings']['recent']['form']):
if form in search_forms:
fname=data['filings']['recent']['primaryDocument'][i]
access_number=data['filings']['recent']['accessionNumber'][i]
access_number=''.join(access_number.split('-'))
cik_data[cik][form].append('/'.join([base_url, access_number, fname]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/354329.html
上一篇:如何在python中決議Google自定義搜索javascript輸出?
下一篇:如何抓取沒有不同類的表資料?
