因此,第一次创建网络抓取。达到积极结果后,应该将其写入 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()
结果:
关于这个主题有什么建议吗?我知道代码不太漂亮,但应该可以工作
我发现问题出在两个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