微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法使用Selenium绕过java? 提高下载速度

如何解决有没有办法使用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 举报,一经查实,本站将立刻删除。