无法使用Selenium和BeautifulSoup抓取文本



我正在尝试在Python中使用Selenium和BeautifulSoup自动获取晨星研究项目的数据。我是Python的新手,所以我刚从Stackoverflow和类似的论坛上尝试了一堆解决方案,但我一直没有成功。

我想刮的是url https://www.morningstar.dk/dk/funds/snapshot/snapshot.aspx?id=F000014CU8&tab=3在url中,我特别寻找"faktorprofile"。您可以单击以将数据显示为表格。我可以从网址得到标题,但我不能汤。找到任何其他文本。我试过使用多个id和类,但没有任何运气。我认为我最成功的代码如下所示。我希望有人能帮忙!

from bs4 import BeautifulSoup
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
opts = Options()
opts.add_argument(" --headless")

chrome_driver = os.getcwd() +"/chromedriver"

driver = webdriver.Chrome(options=opts, executable_path=chrome_driver)

driver.get("https://www.morningstar.dk/dk/funds/snapshot/snapshot.aspx?id=F00000ZG2E&tab=3")

soup_file=driver.page_source
soup = BeautifulSoup(soup_file, 'html.parser')
print(soup.title.get_text())
#print(soup.find(class_='').get_text())
#print(soup.find(id='').get_text())

这是我要抓取的数据[1]: https://i.stack.imgur.com/wkSMj.png

所有这些表都在一个iframe中。下面的代码将检索数据并打印为列表。

driver.implicitly_wait(10)
driver.get("https://www.morningstar.dk/dk/funds/snapshot/snapshot.aspx?id=F000014CU8&tab=3")
driver.switch_to.frame(1)
driver.find_element_by_xpath("//button[contains(@class,'show-table')]//span").click()
table = driver.find_elements_by_xpath("//div[contains(@class,'sal-mip-factor-profile__value-table')]/table//tr/th")
header = []
for tab in table:
header.append(tab.text)
print(header)
tablebody = driver.find_elements_by_xpath("//div[contains(@class,'sal-mip-factor-profile__value-table')]/table//tbody/tr")
for tab in tablebody:
data = []
content = tab.find_elements_by_tag_name("td")
for con in content:
data.append(con.text)
print(data)

输出:

['Faktorer', 'Fonds værdi', '5 år Min. Værdi', '5 år Maks værdi', 'Kategori Gennemsnitlig']
['Stil', '62,33', '31,52', '76,36', '48,20']
['Effektiv rente', '48,83', '20,82', '69,12', '34,74']
['Momentum', '58,47', '7,48', '77,21', '71,15']
['Kvalitet', '25,65', '21,61', '59,66', '38,15']
['Volatilitet', '45,25', '34,66', '81,08', '74,93']
['Likviditet', '35,70', '33,40', '74,94', '79,39']
['Størrelse', '39,60', '35,67', '48,78', '87,59']

最新更新