Попытка удалить данные таблицы 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
Тем не менее, таблица1 не является типом. Это почему? Любое решение? Я прочитал связанные вопросы, iframe, похоже, не является ответом.
любое простое решение для этого, все еще использующее BeautifulSoup или Selenium?
Вы можете получить данные таблицы, используя 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]
большое спасибо, это очень эффективно
короче table_data = pd.read_html('https://www.iposcoop.com/last-12-months')[0]
Хотя ответ Ф. Хока дает вам решение, похоже, он не отвечает, почему ваш код выдает ошибку.
Вы пытаетесь найти таблицу с идентификатором DataTables_Table_0
. Открыв страница в браузере, вы увидите, что такой элемент с данным идентификатором существует. Но если вы откроете ту же страницу после отключения Javascript, вы увидите, что идентификатор больше не существует в таблице. Этот идентификатор назначается некоторым модулем javascript.
BeautifulSoup может получать только базовый HTML и не запускает модули javascript. Итак, у вас есть 2 решения:
.standard-table.ipolist
)Большое спасибо за предоставление этой информации. очень содержательная заметка
Потому что в исходнике нет таблицы с ID
DataTables_Table_0
. Вы, вероятно, смотрите на исходный код в своем браузере, а BeautifulSoup не видит его. BS не выполняет JavaScript, и эта таблица, вероятно, создается динамически с использованием JS.