我在PyCharm中使用Python和Selenium去SEC网站下载一个10-K CSV文件。理想情况下,程序应要求用户输入“股票代码”,然后访问SEC网站,输入提供的股票代码,并从页面下载10-K和10-Q CSV文件。我使用了微软的股票代码(MSFT)作为示例测试。SEC的Edgar搜索网站如下:
https://www.sec.gov/edgar/searchedgar/companysearch.html
我正在使用“快速搜索”搜索引擎。我创建了一个函数“get_edgar_results”来执行此下载。可能是因为我对网页抓取还不熟悉,但我想我已经正确地识别了HTML标签,将搜索词放在了哪里。以前的问题表明,我可能需要让程序在搜索HTML元素之前等待,因此我添加了代码让程序等待。我继续得到这个错误:
line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="Find"]
我的代码如下:
import selenium.webdriver.support.ui as ui
from pathlib import Path
import selenium.webdriver as webdriver
ticker_symbol = input("please provide a ticker symbol: ")
def get_edgar_results(ticker_symbol):
url = "https://www.sec.gov/edgar/searchedgar/companysearch.html"
driver = webdriver.Firefox(executable_path=r"C:\Program Files\JetBrains\geckodriver.exe")
wait = ui.WebDriverWait(driver,30)
driver.set_page_load_timeout(30)
driver.get(url)
search_box = driver.find_element_by_id("Find")
search_box.send_keys(ticker_symbol)
search_box.submit()
annual_links = driver.find_elements_by_class_name("10-K")
quarterly_links = driver.find_elements_by_class_name("10-Q")
results = []
driver.close()
driver.quit()
return results
get_edgar_results(ticker_symbol)
任何帮助都将不胜感激
考虑使用waitUntil或Implicit/Explicit waits方法等待加载元素为止。通过这种方式,您可以避免上面显示的错误,下面的代码用于wait-until方法
下面的代码中似乎也有错误
id=find
定位的是Search Box
而不是input
元素,因此将keys
值发送给button
是不正确的。我建议您使用xpath
来唯一地定位您选择的元素下面将向输入框发送一个值,并在
SEARCH
按钮上单击一个按钮相关问题 更多 >
编程相关推荐