簡體   English   中英

CME的Webscrape表,包括從下拉菜單中選擇所需表的信息

[英]Webscrape table from CME, including selection of desired table from drop down menu

下面的代碼有效。 它返回默認加載表中的數據(利用此處提供的答案: link ,但如何訪問其他表(可通過單擊“合同”按鈕並從菜單中選擇其他合同,例如3月找到)。 2019)?

driver.get("http://www.cmegroup.com/tools-information/quikstrike/treasury-analytics.html")
# Need to include some more time here for data in iframe to load?
driver.implicitly_wait(3)
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
soup = BeautifulSoup(driver.page_source, 'html.parser')
CMEtreasuryAnalytics._table = soup.select('table.grid')[0]

我嘗試了此操作,但返回了以下錯誤: NoSuchFrameException:消息:沒有這樣的框架:元素不是框架

driver.get("http://www.cmegroup.com/tools-nformation/quikstrike/treasury-analytics.html")
cDate = 'Dec 2018'
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
elements = driver.find_elements_by_class_name("square-corners ")
options = [element.get_attribute("innerText") for element in elements] 
if cDate in options:
    element = elements[options.index(cDate)] 
else:
    pass
driver.switch_to.frame(element)

我也嘗試過'click()',但也無法使其正常工作。 我是硒新手,不勝感激關於如何訪問所述數據的一些建議。 我正在使用python和chrome webdriver。

好。 我想我已經解決了。 菜單位於iFrame中,因此在獲取元素詳細信息之后,需要先單擊()菜單,然后單擊element.click(),然后抓取顯示的數據。 最終代碼如下,但是我不知道這是否是最直接的方法。

driver.get("http://www.cmegroup.com/tools-nformation/quikstrike/treasury-analytics.html")
cDate = 'Jun 2019'
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
elements = driver.find_elements_by_class_name("square-corners ")
options = [element.get_attribute("innerText") for element in elements] 
if cDate in options:
    element = elements[options.index(cDate)] 
else:
    pass            
# Click the dropdown menu labelled 'Contracts'
driver.find_element_by_xpath('//*[@id="ctl00_MainContent_ucViewControl_IntegratedStrikeAsYield_ucContractPicker_ucTrigger_lnkTrigger"]').click()
driver.implicitly_wait(1) 
element.click()
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
soup = BeautifulSoup(driver.page_source, 'html.parser')
CMEtreasuryAnalytics._table = soup.select('table.grid')[0]

更新:上面的工作了一段時間,但隨后失敗並顯示以下消息。 因此,也許這是正確的選擇,但我需要更好的方法從標記為“合同”的下拉列表中選擇一個選項。 怎么做? 消息:未知錯誤:元素在點(511,475)處不可單擊。 其他元素將獲得點擊:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM