在Python中,如何使用多个<;td>;?
在Python3中,我需要收集表中站点的大量信息(第一个站点是:) 所示内容:在Python中,如何使用多个<;td>;?,python,html,web-scraping,beautifulsoup,Python,Html,Web Scraping,Beautifulsoup,在Python3中,我需要收集表中站点的大量信息(第一个站点是:) 所示内容: http://www.portaltransparencia.gov.br/ceis?pagina=1 [<tr class="nome-divergente"> <td> <a href="/ceis/empresa/08307727000128"> 08.307.727/0001-28
http://www.portaltransparencia.gov.br/ceis?pagina=1
[<tr class="nome-divergente">
<td>
<a href="/ceis/empresa/08307727000128">
08.307.727/0001-28
</a>
</td>
<td> TECK SHOCK COMERCIO E SERVICO EIRELI - ME ** </td>
<td>Suspensão - Lei de Licitações</td>
<td>16/05/2018</td>
<td>Governo do Estado do Espírito Santo (ES)</td>
<td>ES</td>
</tr>, <tr class="nome-divergente">
<td>
<a href="/ceis/empresa/05236586000101">
05.236.586/0001-01
</a>
</td>
<td> META TERCEIRIZACOES E SERVICOS LTDA ** </td>
<td>Suspensão - Legislação Estadual</td>
<td>26/12/2018</td>
<td>Governo do Estado da Bahia</td>
<td>BA</td>
</tr>, <tr class="nome-divergente">
<td>
<a href="/ceis/empresa/05236586000101">
05.236.586/0001-01
</a>
</td>
<td> META TERCEIRIZACOES E SERVICOS LTDA ** </td>
<td>Suspensão - Legislação Estadual</td>
<td>22/08/2018</td>
<td>Governo do Estado da Bahia (BA)</td>
<td>BA</td>
</tr>, <tr class="nome-divergente">
<td>
<a href="/ceis/empresa/05236586000101">
05.236.586/0001-01
</a>
</td>
<td> META TERCEIRIZACOES E SERVICOS LTDA ** </td>
<td>Inidoneidade - Legislação Estadual</td>
<td></td>
<td>Governo do Estado da Bahia (BA)</td>
<td>BA</td>
</tr>, <tr class="nome-divergente">
<td>
<a href="/ceis/empresa/04125082000151">
04.125.082/0001-51
</a>
</td>
<td> PRIMEIRA OPCAO LOCACAO TRANSPORTE E TURISMO LTDA - ME ** </td>
<td>Inidoneidade - Lei da ANTT e ANTAQ </td>
<td>16/01/2021</td>
<td>AGÊNCIA NACIONAL DE TRANSPORTES TERRESTRES</td>
<td>DF</td>
</tr>]
# This is the content of blocos
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-63-dae9be7999b3> in <module>()
12 cnpj = linha.find("a").text.strip()
13 link = linha.find("href")
---> 14 nome = linha.find("td")[1].text.strip()
15 tipo = linha.find("td")[2].text.strip()
16 data = linha.find("td")[3].text.strip()
~/Documentos/Code/knight/lib/python3.6/site-packages/bs4/element.py in __getitem__(self, key)
1009 """tag[key] returns the value of the 'key' attribute for the tag,
1010 and throws an exception if it's not there."""
-> 1011 return self.attrs[key]
1012
1013 def __iter__(self):
KeyError: 1
http://www.portaltransparencia.gov.br/ceis?pagina=1
[
TECK SHOCK COMERCIO E SERVICO EIRELI-ME**
利西塔悬念
16/05/2018
埃斯皮里托省政府(ES)
锿
,
META TERCEIRIZACOES E SERVICOS LTDA**
悬念——立法机关
26/12/2018
巴伊亚州政府
文学士
,
META TERCEIRIZACOES E SERVICOS LTDA**
悬念——立法机关
22/08/2018
巴伊亚州政府(文学士)
文学士
,
META TERCEIRIZACOES E SERVICOS LTDA**
伊尼多尼亚德-立法机构
巴伊亚州政府(文学士)
文学士
,
PRIMEIRA OPCAO本地运输和旅游有限公司-ME**
Inidoneidade-Lei da ANTT e ANTAQ
16/01/2021
阿根廷国家运输局(AGÊNCIA National DE TRANSPORTES TERRESTRES)
DF
]
#这是blocos的内容
---------------------------------------------------------------------------
KeyError回溯(最近一次呼叫最后一次)
在()
12 cnpj=linha.find(“a”).text.strip()
13 link=linha.find(“href”)
--->14 nome=linha.find(“td”)[1].text.strip()
15 tipo=linha.find(“td”)[2].text.strip()
16 data=linha.find(“td”)[3].text.strip()
~/Documentos/Code/knight/lib/python3.6/site-packages/bs4/element.py in\uuuuu getitem\uuuuuu(self,key)
1009“”标记[key]返回标记的“key”属性的值,
1010并在不存在时抛出异常。”“”
->1011返回self.attrs[键]
1012
1013定义iter(自身):
关键错误:1
所以,对于表中的每一行,“blocos”都有一系列的
我想我应该在“blocos”中写一篇文章来读这篇文章
我尝试访问该号码,例如linha.find(“td”)[1].text.strip()
但是出现了一条错误消息
请问,有人知道我如何访问使用的表行吗?您需要首先循环通过tr的,然后在该循环内部,循环通过td的。下面是一个简单的例子。我还建议动态获取总页数(819),不要使用硬编码的数字(就像在for循环中那样)
您需要首先循环通过tr的,然后在该循环内部,循环通过td的。下面是一个简单的例子。我还建议动态获取总页数(819),不要使用硬编码的数字(就像在for循环中那样)
非常感谢你。但是在这种方法中,您是否也可以隔离变量中的列?例如,cnpj='08.307.727/0001-28',link=''…更新了我的答案。这将为您指明正确的方向。非常感谢。但是在这种方法中,您是否也可以隔离变量中的列?例如,cnpj='08.307.727/0001-28',link=''…更新了我的答案。这会让你找到正确的方向。
http://www.portaltransparencia.gov.br/ceis?pagina=1
[<tr class="nome-divergente">
<td>
<a href="/ceis/empresa/08307727000128">
08.307.727/0001-28
</a>
</td>
<td> TECK SHOCK COMERCIO E SERVICO EIRELI - ME ** </td>
<td>Suspensão - Lei de Licitações</td>
<td>16/05/2018</td>
<td>Governo do Estado do Espírito Santo (ES)</td>
<td>ES</td>
</tr>, <tr class="nome-divergente">
<td>
<a href="/ceis/empresa/05236586000101">
05.236.586/0001-01
</a>
</td>
<td> META TERCEIRIZACOES E SERVICOS LTDA ** </td>
<td>Suspensão - Legislação Estadual</td>
<td>26/12/2018</td>
<td>Governo do Estado da Bahia</td>
<td>BA</td>
</tr>, <tr class="nome-divergente">
<td>
<a href="/ceis/empresa/05236586000101">
05.236.586/0001-01
</a>
</td>
<td> META TERCEIRIZACOES E SERVICOS LTDA ** </td>
<td>Suspensão - Legislação Estadual</td>
<td>22/08/2018</td>
<td>Governo do Estado da Bahia (BA)</td>
<td>BA</td>
</tr>, <tr class="nome-divergente">
<td>
<a href="/ceis/empresa/05236586000101">
05.236.586/0001-01
</a>
</td>
<td> META TERCEIRIZACOES E SERVICOS LTDA ** </td>
<td>Inidoneidade - Legislação Estadual</td>
<td></td>
<td>Governo do Estado da Bahia (BA)</td>
<td>BA</td>
</tr>, <tr class="nome-divergente">
<td>
<a href="/ceis/empresa/04125082000151">
04.125.082/0001-51
</a>
</td>
<td> PRIMEIRA OPCAO LOCACAO TRANSPORTE E TURISMO LTDA - ME ** </td>
<td>Inidoneidade - Lei da ANTT e ANTAQ </td>
<td>16/01/2021</td>
<td>AGÊNCIA NACIONAL DE TRANSPORTES TERRESTRES</td>
<td>DF</td>
</tr>]
# This is the content of blocos
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-63-dae9be7999b3> in <module>()
12 cnpj = linha.find("a").text.strip()
13 link = linha.find("href")
---> 14 nome = linha.find("td")[1].text.strip()
15 tipo = linha.find("td")[2].text.strip()
16 data = linha.find("td")[3].text.strip()
~/Documentos/Code/knight/lib/python3.6/site-packages/bs4/element.py in __getitem__(self, key)
1009 """tag[key] returns the value of the 'key' attribute for the tag,
1010 and throws an exception if it's not there."""
-> 1011 return self.attrs[key]
1012
1013 def __iter__(self):
KeyError: 1
import requests
from bs4 import BeautifulSoup
if __name__ == '__main__':
requestUrl = "http://www.portaltransparencia.gov.br/ceis?pagina=2"
response = requests.get(requestUrl)
soup = BeautifulSoup(response.content, "html.parser")
data = []
for tr in soup.find_all('tr'):
col = 0
for td in tr.find_all('td'):
td_text = td.get_text().strip()
if col == 0:
cnpj_cpf = td_text
cnpj_cpf_link = 'http://www.portaltransparencia.gov.br{}'
cnpj_cpf_link = cnpj_cpf_link.format(td.find('a').get('href'))
if col == 1:
nome = td_text
if col == 2:
tipo = td_text
if col == 3:
data_final = td_text
if col == 4:
nome_do_orago = td_text
if col == 5:
uf = td_text
data.append({
'cnpj_cpf' : cnpj_cpf,
'cnpj_cpf_link' : cnpj_cpf_link,
'nome' : nome,
'tipo' : tipo,
'data_final' : data_final,
'nome_do_orago' : nome_do_orago,
'uf' : uf
})
col += 1
print (data)