簡體   English   中英

使用 Selenium 在 python 中進行網頁抓取問題

[英]Webscraping question in python using Selenium

我正在嘗試在 python 中使用 selenium 進行抓取。 我想要來自這個站點和部分的太陽能數據: https ://www.caiso.com/TodaysOutlook/Pages/supply.html#section-renewables-trend 在此處輸入圖像描述

我認為我遇到的問題是Chart data (CSV)菜單選項不能用作按鈕,因此單擊它不起作用。 這是我在單擊“圖表數據(CSV)”菜單選項之前和之后檢查元素時看到的。

之前: <a class="dropdown-item mb-0" id="downloadRenewablesCSV" data-type="text/csv">Chart data (CSV)</a>

之后: <a class="dropdown-item mb-0" id="downloadRenewablesCSV" data-type="text/csv" href="data:text/csv;charset=utf8,Renewables%2007%2F20%2 ... [alot of encoded data] ...2C209%2C211%2C211%2C211%2C212%2C211%2C211%2C210%0A" download="CAISO-renewables-20220720.csv">Chart data (CSV)</a>

最初我認為它只是一個按鈕元素,可以下載 csv 文件並嘗試這樣做:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome(executable_path='PATH')
driver.get('https://www.caiso.com/TodaysOutlook/Pages/supply.html')
button = driver.find_element(by='xpath',value='/html/body/div[1]/div[3]/div[8]/div/div/div[2]/nav/div[3]/div/a[1]')
button.click()

這是行不通的。 有什么建議嗎? 我對硒很陌生,抱歉。

JS 路徑交互:

Xpath 選擇器可能有點挑剔,我會回歸基礎並嘗試通過 JS Path 與元素交互 我能夠重現錯誤並使用 JS 路徑下載報告。 實現以下更新的代碼:

driver.get('https://www.caiso.com/TodaysOutlook/Pages/supply.html')
driver.execute_script("el = document.querySelector('#downloadRenewablesCSV');el.click();")

您試圖在沒有實際展開下拉列表的情況下單擊下載按鈕,該元素在單擊下拉列表時變為可交互的。

只有在單擊 div 時,才會將show類動態添加到div中。

單擊下拉按鈕后,下面的代碼應該可以工作

dropdown = driver.find_element(By.XPATH, "//button[@id='dropdownMenuRenewables']")
dropdown.click()
download_b = driver.find_element(By.XPATH, "//a[@id='downloadRenewablesCSV']")
download_b.click()

這將為您下載文件

暫無
暫無

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

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