如何解决有没有办法使用Selenium绕过java? 提高下载速度
我创建了一个 Python 函数来下载有关在巴西圣保罗州犯下的罪行的数据集:http://www.ssp.sp.gov.br/transparenciassp/
例如,要下载多年来发生在 1 月份的凶手(或任何其他类型的犯罪)的信息,可以使用以下功能:
def download_crime_sp(ls_crime,ls_months,ls_years):
driver = webdriver.Chrome(executable_path='/home/miranda/webscrap_Python/chromedriver')
driver.set_page_load_timeout(1000)
for i in ls_crime:
driver.get('http://www.ssp.sp.gov.br/transparenciassp/')
webdriverwait(driver,1000).until(EC.element_to_be_clickable((By.XPATH,'//*[(@id = "cphBody_btnHomicicio")]')))
driver.find_element_by_xpath(i).click()
for j in ls_years:
link = None
while not link:
try:
link = driver.find_element_by_xpath(j)
except NoSuchElementException:
time.sleep(2)
webdriverwait(driver,'//*[(@id = "cphBody_lkAno20")]')))
driver.find_element_by_xpath(j).click()
for k in ls_months:
webdriverwait(driver,k)))
driver.find_element_by_xpath(k).click()
webdriverwait(driver,'//*[(@id = "cphBody_ExportarBOLink")]')))
driver.find_element_by_xpath('//*[(@id = "cphBody_ExportarBOLink")]').click()
time.sleep(20)
list_crimes = '//*[(@id = "cphBody_btnHomicicio")]'
list_months = '//*[(@id = "cphBody_lkMes1")]'
list_years = [y_2020,y_2019,y_2018,y_2017,y_2016,y_2015,y_2014,y_2013,y_2012,y_2011,y_2010,y_2009,y_2008,y_2007,y_2006,y_2005,y_2004,y_2003]
download_crime_sp(list_crimes,list_months,list_years)
当我使用脚本下载不经常发生的犯罪时,该脚本工作正常,换句话说,当要下载的表相对较小时,例如谋杀 (homicidio doloso)。但是,对于诸如车辆盗窃 (furto de veiculo) 之类的犯罪,我的代码会中断,因为页面需要永远加载。
有什么办法可以绕过这个需要永远加载和下载数据集的java层吗?我曾尝试与负责页面的政府机构沟通他们的服务器有多慢,但他们基本上不在乎。在这种情况下,有什么办法可以提高下载速度?在这一点上我很绝望。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。