Python:如何使用Selenium下载.csv文件?

时间:2018-01-23 14:58:14

标签: python csv selenium

我正在使用Selenium浏览以下网站:

https://apps1.eere.energy.gov/sled/#/

我想拥有像Boston这样的城市的数据:我正在做的是以下内容:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

driver = webdriver.Firefox()
driver.get("https://apps1.eere.energy.gov/sled/#/")
search = driver.find_element_by_class_name('sr-only')
search.send_keys("Boston")
search.send_keys(Keys.RETURN)
time.sleep(5)
tmp = driver.find_element_by_css_selector("a.csv-link")    

这种方法允许我到达以下网页:

https://apps1.eere.energy.gov/sled/#/results/elecandgas?city=Boston&abv=MA&section=electricity&currentState=Massachusetts&lat=42.3600825&lng=-71.05888010000001

现在,我想通过点击csv然后State and National Retail Electricity Rate Trends下载Download Chart下的Download Chart\Data CSV文件。

我尝试点击它:

tmp.click()

但我得到了错误:

ElementNotInteractableException: Message: 

我在检查按钮(Download Chart/Data)时报告我想通过在Firefox中显示检查元素的屏幕截图来点击。

enter image description here

4 个答案:

答案 0 :(得分:0)

'a.csv-link'不是上课。您可以尝试使用页面中显示的ID。

你可以试试这个:

content = driver.find_element_by_id('csv-link')

答案 1 :(得分:0)

您试图先点击“下载聊天”,然后尝试点击“下载图表/数据CSV”下载CSV文件,问题出在您正在使用的定位器上

您正在尝试根据类名单击元素,但定位器没有类属性。

点击下载聊天后尝试使用以下xpath。

//a[@id='csv-link']

答案 2 :(得分:0)

a.csv-link是一个css定位器,因此您需要driver.find_element_by_css_selector

答案 3 :(得分:0)

在到达您指定的页面后,下载文件涉及两个步骤。首先,您必须单击dorp-down按钮,然后您必须选择csv数据选项。使用这些元素的相应xpath,

EntityManager em = entityManagerFactory.createEntityManager();
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Person.class);
Root person = criteriaQuery.from(Person.class);
person.fetch(Person_.adresses);
criteriaQuery.select(person);

List resultList = em.createQuery(criteriaQuery).getResultList();