John
John

Reputation: 39

Web scraping in python from table

I'm trying to scrape this page in python, in order to get all that information in a table. But once this table is kinda different, the information I want, the one that comes after the 'Autor:', 'Situação', 'Última Ação', etc, does not come in separate td (HTML) like common tables, how to proceed then ?

This is what I've done so far, but the information come very messy:

from bs4 import BeautifulSoup
import requests

url = 'https://sapl.recife.pe.leg.br/generico/materia_pesquisar_proc?page=1&step=10&txt_relator=&txt_numero=&dt_public2=&lst_tip_autor=Parlamentar&txt_num_protocolo=&hdn_txt_autor=&txt_ano=&hdn_cod_autor=&lst_localizacao=&lst_tip_materia=10&txt_assunto=&btn_materia_pesquisar=Pesquisar&incluir=0&lst_cod_partido=&dt_apres2=&chk_coautor=0&txt_npc=&lst_status=&dt_public=&rd_ordenacao=1&rad_tramitando=&existe_ocorrencia=0&dt_apres='

source = requests.get(url).text

soup = BeautifulSoup(source, 'lxml')

lst = []
for item in soup.find_all('tr'):

    try:
        lst.append((item.text))
    except:
        pass

print(lst)

Upvotes: 2

Views: 98

Answers (1)

Adhun Thalekkara
Adhun Thalekkara

Reputation: 723

check is this what u expecting

from bs4 import BeautifulSoup
import requests

url = 'https://sapl.recife.pe.leg.br/generico/materia_pesquisar_proc?page=1&step=10&txt_relator=&txt_numero=&dt_public2=&lst_tip_autor=Parlamentar&txt_num_protocolo=&hdn_txt_autor=&txt_ano=&hdn_cod_autor=&lst_localizacao=&lst_tip_materia=10&txt_assunto=&btn_materia_pesquisar=Pesquisar&incluir=0&lst_cod_partido=&dt_apres2=&chk_coautor=0&txt_npc=&lst_status=&dt_public=&rd_ordenacao=1&rad_tramitando=&existe_ocorrencia=0&dt_apres='

source = requests.get(url).text

soup = BeautifulSoup(source, features="html.parser")

lst = []
for item in soup.find_all('tr'):

    try:
        lst.append((item.text))
    except:
        pass

for i in range(len(lst)):
    lst[i]=lst[i].replace('\n\n','')
    # print(lst[i])
import  re
words=['Autor','Localização ']
import re
newl=[]
for i in lst:
    match0 = re.search(r'\b%s\b' % words[0], i)
    if match0:
        match1 = re.search(r'\b%s\b' % words[1], i)
        match2 = re.search(r'\b%s\b' % words[1], i)
        newl.append(i[match0.start():match1.start()].replace(" ", "").replace("\n",''))
        newl.append(i[match1.start():match2.start()])
        newl.append(i[match2.start():])
for i in newl:
    if i!='':
        print(i)

output

Autor:SamuelSalazar
Localização Atual: COMISSÕES
Situação: AGUARDANDO EMENDAS(PRAZO REGIMENTAL)
Última Ação: APRESENTADO NO EXPEDIENTE DA REUNIÃO REMOTA REALIZADA EM 13/07/2020. DISTRIBUÍDO PARA COMISSÕES COMPETENTES PARA ANÁLISE E EMISSÃO DOS PARECERES. PRAZO PARA RECEBIMENTO DE EMENDAS DE 14 À 28/07/2020. (VER COMISSÕES NO DESPACHO INICIAL)    -  Em: 13/07/2020
Data Fim do Prazo:  28/07/2020
 Acompanhar matéria   TextoIntegral
Autor:RenatoAntunes
Localização Atual: COMISSÕES
Situação: AGUARDANDO EMENDAS(PRAZO REGIMENTAL)
Última Ação: APRESENTADO NO EXPEDIENTE DA REUNIÃO REMOTA REALIZADA EM 13/07/2020. DISTRIBUÍDO PARA COMISSÕES COMPETENTES PARA ANÁLISE E EMISSÃO DOS PARECERES. PRAZO PARA RECEBIMENTO DE EMENDAS DE 14 À 28/07/2020. (VER COMISSÕES NO DESPACHO INICIAL)    -  Em: 13/07/2020
Data Fim do Prazo:  28/07/2020
 Acompanhar matéria   TextoIntegral
Autor:LuizEustáquio
Localização Atual: COMISSÕES
Situação: AGUARDANDO EMENDAS(PRAZO REGIMENTAL)
Última Ação: APRESENTADO NO EXPEDIENTE DA REUNIÃO REMOTA REALIZADA EM 06/07/2020. DISTRIBUÍDO PARA COMISSÕES COMPETENTES PARA ANÁLISE E EMISSÃO DOS PARECERES. PRAZO PARA RECEBIMENTO DE EMENDAS DE 07 À 18/07/2020. (VER COMISSÕES NO DESPACHO INICIAL)   -  Em: 06/07/2020
Data Fim do Prazo:  18/07/2020
 Acompanhar matéria   TextoIntegral
Autor:LuizEustáquio
Localização Atual: COMISSÕES
Situação: AGUARDANDO EMENDAS(PRAZO REGIMENTAL)
Última Ação: APRESENTADO NO EXPEDIENTE DA REUNIÃO REMOTA REALIZADA EM 06/07/2020. DISTRIBUÍDO PARA COMISSÕES COMPETENTES PARA ANÁLISE E EMISSÃO DOS PARECERES. PRAZO PARA RECEBIMENTO DE EMENDAS DE 07 À 18/07/2020. (VER COMISSÕES NO DESPACHO INICIAL)   -  Em: 06/07/2020
Data Fim do Prazo:  18/07/2020
 Acompanhar matéria   TextoIntegral
Autor:FredFerreira
Localização Atual: COMISSÕES
Situação: AGUARDANDO EMENDAS(PRAZO REGIMENTAL)
Última Ação: APRESENTADO NO EXPEDIENTE DA REUNIÃO REMOTA REALIZADA EM 30/06/2020. DISTRIBUÍDO PARA COMISSÕES COMPETENTES PARA ANÁLISE E EMISSÃO DOS PARECERES. PRAZO PARA RECEBIMENTO DE EMENDAS DE 01 À 14/07/2020. (VER COMISSÕES NO DESPACHO INICIAL)  -  Em: 30/06/2020
Data Fim do Prazo:  14/07/2020
 Acompanhar matéria   TextoIntegral
Autor:SamuelSalazar
Localização Atual: COMISSÕES
Situação: AGUARDANDO EMENDAS(PRAZO REGIMENTAL)
Última Ação: APRESENTADO NO EXPEDIENTE DA REUNIÃO REMOTA REALIZADA EM 30/06/2020. DISTRIBUÍDO PARA COMISSÕES COMPETENTES PARA ANÁLISE E EMISSÃO DOS PARECERES. PRAZO PARA RECEBIMENTO DE EMENDAS DE 01 À 14/07/2020. (VER COMISSÕES NO DESPACHO INICIAL)  -  Em: 30/06/2020
Data Fim do Prazo:  14/07/2020
 Acompanhar matéria   TextoIntegral
Autor:MicheleCollins
Localização Atual: COMISSÕES
Situação: AGUARDANDO EMENDAS(PRAZO REGIMENTAL)
Última Ação: APRESENTADO NO EXPEDIENTE DA REUNIÃO REMOTA REALIZADA EM 29/06/2020. DISTRIBUÍDO PARA COMISSÕES COMPETENTES PARA ANÁLISE E EMISSÃO DOS PARECERES. PRAZO PARA RECEBIMENTO DE EMENDAS DE 30/06 À 13/07/2020. (VER COMISSÕES NO DESPACHO INICIAL)  -  Em: 29/06/2020
Data Fim do Prazo:  13/07/2020
 Acompanhar matéria   TextoIntegral
Autor:MicheleCollins
Localização Atual: COMISSÕES
Situação: AGUARDANDO EMENDAS(PRAZO REGIMENTAL)
Última Ação: APRESENTADO NO EXPEDIENTE DA REUNIÃO REMOTA REALIZADA EM 29/06/2020. DISTRIBUÍDO PARA COMISSÕES COMPETENTES PARA ANÁLISE E EMISSÃO DOS PARECERES. PRAZO PARA RECEBIMENTO DE EMENDAS DE 30/06 À 13/07/2020. (VER COMISSÕES NO DESPACHO INICIAL)  -  Em: 29/06/2020
Data Fim do Prazo:  13/07/2020
 Acompanhar matéria   TextoIntegral
Autor:MicheleCollins
Localização Atual: COMISSÕES
Situação: AGUARDANDO EMENDAS(PRAZO REGIMENTAL)
Última Ação: APRESENTADO NO EXPEDIENTE DA REUNIÃO REMOTA REALIZADA EM 29/06/2020. DISTRIBUÍDO PARA COMISSÕES COMPETENTES PARA ANÁLISE E EMISSÃO DOS PARECERES. PRAZO PARA RECEBIMENTO DE EMENDAS DE 30/06 À 13/07/2020. (VER COMISSÕES NO DESPACHO INICIAL)  -  Em: 29/06/2020
Data Fim do Prazo:  13/07/2020
 Acompanhar matéria   TextoIntegral

Upvotes: 1

Related Questions