Python 有没有一种方法可以绕过使用Selenium的java?(提高下载速度)

Python 有没有一种方法可以绕过使用Selenium的java?(提高下载速度),python,selenium,web-scraping,Python,Selenium,Web Scraping,我创建了一个Python函数来下载有关巴西圣保罗州犯罪的数据集: 例如,要下载历年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_ti

我创建了一个Python函数来下载有关巴西圣保罗州犯罪的数据集:

例如,要下载历年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, 1000).until(EC.element_to_be_clickable((By.XPATH, '//*[(@id = "cphBody_lkAno20")]')))
            driver.find_element_by_xpath(j).click()

            for k in ls_months:

                WebDriverWait(driver, 1000).until(EC.element_to_be_clickable((By.XPATH, k)))
                driver.find_element_by_xpath(k).click()
                WebDriverWait(driver, 1000).until(EC.element_to_be_clickable((By.XPATH, '//*[(@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)

当我使用脚本下载不经常发生的犯罪时,脚本工作得很好,换句话说,当要下载的表相对较小时,例如谋杀(杀人多洛索)。但是,对于诸如车辆盗窃(furto de veiculo)之类的犯罪,我的代码会中断,因为加载页面需要很长时间

有什么办法可以绕过这个java层,直接加载和下载数据集需要花费很长时间?我曾试图与负责该页面的政府机构沟通他们的服务器有多慢,但他们基本上不在乎。在这种情况下,有什么可以提高下载速度的吗?在这一点上我没有希望。

只需将等待添加到
Aguarde enquanto os dados são carregados…

不可见。