SQLITE3 在错误的行上插入数据

问题描述 投票:0回答:1

因此,第一次创建网络抓取。达到积极结果后,应该将其写入 sqlite3 上。问题是:由于某种原因,它会跳过第二列上的一行。我尝试了很多更改,但对修复没有任何线索。

网页抓取代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import time
from sqlprocessos import get_numproc, insert_data

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")



def get_process_date(url, process):
    options = webdriver.ChromeOptions()
    options.add_argument("--headless=new")
    driver = webdriver.Chrome(options=options)
    print(url)
    driver.get(url)
    time.sleep(5)
    driver.switch_to.frame('mainframe')

    iframe_content = driver.page_source

    soup = BeautifulSoup(iframe_content, 'html.parser')

    body_element = soup.find('app-movimento')
    possibel_mov = ['Data da juntada: ', 'Data de recebimento: ', 'Data de remessa: ', 'Data do trânsito: ', 'Data de arquivamento: ', 'Data da conclusão: ', 'Data: ', 'Data de devolução: ']
    possibel_desc =['Juiz: ', 'Descrição da Juntada: ', 'Descrição', 'Tipo de arquivamento: ', 'Descrição: ']
    data_da_juntada = ''
    descricao_da_juntada = ''
 
    def get_data(possible_mov):
        data_da_juntada = soup.find('label', text= possibel_mov).find_next('label').text.strip()
        print(f"Data: {data_da_juntada}")
        return data_da_juntada
    for i in possibel_mov:
       try:
            data = get_data(i)
            if type(data) == str:
                insert_data("p" + str(process).replace('-','').replace('.',''),data,descricao_da_juntada)
                    
       except Exception as e:
            pass
        
    
    def get_descricao(possible_desc):
        descricao_da_juntada = soup.find('label', text= possibel_desc).find_next('label').text.strip()
        print(f"{possibel_desc}: {descricao_da_juntada}")
        return descricao_da_juntada
    for d in possibel_desc:
        try:
            data = get_descricao(d)
            if type(data) == str:
                insert_data("p" + str(process).replace('-','').replace('.',''),data_da_juntada,data)
                
            print(get_descricao(d))
            
        except Exception as e:
            pass

    driver.switch_to.default_content()
    driver.quit()


base_url = 'https://www3.tjrj.jus.br/consultaprocessual/#/consultapublica?numProcessoCNJ='


num_procs = get_numproc()
for num in num_procs:
    url = base_url + num
    get_process_date(url, num)
    time.sleep(5)

写函数

def insert_data(tabela, data, descricao):
comando = f'INSERT INTO {tabela} (DATA, MOVIMENTO) VALUES (?, ?)'
valores = (data, descricao)
cursor.execute(comando,valores)
print(cursor)
conexao.commit()

结果:

关于这个主题有什么建议吗?我知道代码不太漂亮,但应该可以工作

python python-3.x sqlite sqlite3-python
1个回答
0
投票

我发现问题出在两个for循环上。如果只包含在一个 for 循环中,它就可以正常工作。

data2 = ''
for i in possivel_mov:
   try:
        data = get_data(i)
        if type(data) == str:
            for d in possivel_desc:
                try:
                    data2 = get_descricao(d)
                    if type(data2) == str:
                           insert_data("p" + str(process).replace('-','').replace('.',''),data,data2)
                except Exception as e:
                    pass
            #insert_data("p" + str(process).replace('-','').replace('.',''),data,descricao_da_juntada)
            
   except Exception as e:
        pass
© www.soinside.com 2019 - 2024. All rights reserved.