試圖從這里廢棄 IPO 表資料: https ://www.iposcoop.com/last-12-months/
這是我的代碼:
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.iposcoop.com/last-12-months/'
page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')
table1 = soup.find("table",id='DataTables_Table_0')
table1_data = table1.tbody.find_all("tr")
table1
但是,table1 是 NonType。這是為什么?有什么解決辦法嗎?我已閱讀相關問題,iframe 似乎不是答案。
uj5u.com熱心網友回復:
您可以使用 pandas 獲取表資料
import pandas as pd
import requests
from bs4 import BeautifulSoup
url='https://www.iposcoop.com/last-12-months'
req=requests.get(url).text
soup=BeautifulSoup(req,'lxml')
table=soup.select_one('.standard-table.ipolist')
table_data =pd.read_html(str(table))[0]
print(table_data)
輸出:
Company Symbol ... Return SCOOP Rating
0 Akanda Corp. AKAN ... 85.00% S/O
1 The Marygold Companies, Inc. (aka Concierge Te... MGLD ... 9.50% S/O
2 Blue Water Vaccines, Inc. BWV ... 343.33% S/O
3 Meihua International Medical Technologies MHUA ... -33.00% S/O
4 Vivakor, Inc. VIVK ... -49.40% S/O
.. ... ... ... ... ...
355 Khosla Ventures Acquisition Co. III KVSC ... -2.80% S/O
356 Dragoneer Growth Opportunities Corp. III DGNU ... -2.40% S/O
357 Movano Inc. MOVE ... -43.60% S/O
358 Supernova Partners Acquisition Company III STRE.U ... 0.10% S/O
359 Universe Pharmaceuticals UPC ... -74.00% S/O
[360 rows x 10 columns]
uj5u.com熱心網友回復:
雖然 F.Hoque 的回答為您提供了解決方案,但它似乎沒有回答您的代碼為什么會引發錯誤。
您正在嘗試查找帶有 id 的表DataTables_Table_0。在瀏覽器中打開頁面 ,您可以看到具有給定 id 的元素存在。但是,如果您在禁用 Javascript 后打開同一頁面,您會看到該 id 不再存在于表格中。這個 id 是由一些 javascript 模塊分配的。
BeautifulSoup 只能獲取基本 HTML,它不運行 javascript 模塊。所以你有2個解決方案:
- 使用基本 HTML 中存在的選擇器(在本例中
.standard-table.ipolist) - 使用 selenium 運行 Javascript 并獲取在瀏覽器中看到的 HTML
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448283.html
