当我运行下面的代码时,一个chrome窗口打开,页面加载,CSV文件下载到我的文档中。在
但是,我想将CSV文件下载到python列表中。在
当我试图打印初始下载时,它显示'None'和reading incsv.reader显示以下错误消息:
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
def getData()
driver = webdriver.Chrome()
driver.get(f"http://financials.morningstar.com/balance-sheet/bs.html?t=AAPL")
button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "rf_export")))
data = button.click()
print(data)
data = csv.reader(button)
for row in data:
print(row)
return data
getData()
-------------
None
Traceback (most recent call last):
File "helpers.py", line 403, in <module>
newData2("AAPL")
File "helpers.py", line 397, in newData2
data = csv.reader(button)
TypeError: argument 1 must be an iterator
如果您看一下该页面上的下载按钮,它是指向以下javascript函数的链接:
SRT_stocFund.Export()
查看此函数(位于http://financials.morningstar.com/finan/static/script/SRT_stockFund.js),它调用
SRT_StockFund.GetPara()
,并使用返回的数据创建链接,并将浏览器的位置更改为该链接:document.location = hostPath+"/ajax/ReportProcess4CSV.html?" + params+"&denominatorView="+denominatorView+"&number="+number;
在我的例子中,url如下所示:
"//financials.morningstar.com/ajax/ReportProcess4CSV.html?&t=XNAS:AAPL®ion=usa&culture=en-US&cur=&reportType=bs&period=12&dataType=A&order=asc&columnYear=5&curYearPart=1st5year&rounding=3&view=raw&r=13805&denominatorView=raw&number=3"
在硒中,你可以很容易地做到:
GetPara()
函数您可以从selenium内部调用javascript,方法如下:
driver.execute_script('SRT_stocFund.GetPara()')
-然后构建字符串来创建下载链接,并检索它。在你的浏览器的开发工具是你的朋友。在
相关问题 更多 >
编程相关推荐