[英]How to scrape fixed-width files in Python?
在Python 3中,我具有“固定宽度文件”的一系列链接。 它们是包含有关公司的公共信息的网站。 每行都有有关公司的信息
示例链接:
和
我在字典中有这些链接。 关键是公司所在国家/地区的名称,值是链接
for chave, valor in dict_val.items():
print (f'Region of country: {chave} - and link with information: {valor}')
Region of country: Acre - and link with information: http://idg.receita.fazenda.gov.br/orientacao/tributaria/cadastros/cadastro-nacional-de-pessoas-juridicas-cnpj/consultas/download/F.K03200UF.D71214AC
Region of country: Espírito Santo - and link with information: http://idg.receita.fazenda.gov.br/orientacao/tributaria/cadastros/cadastro-nacional-de-pessoas-juridicas-cnpj/consultas/download/F.K03200UF.D71214ES
...
我想阅读这些链接(定宽文件),然后将内容保存到CSV文件中。 示例内容:
0107397388000155ASSOCIACAO CULTURAL
02073973880001552 16MARIA DO SOCORRO RODRIGUES ALVES BRAGA
0101904573000102ABREU E SILVA COMERCIO DE MEDICAMENTOS LTDA-ME - ME
02019045730001022 49JETEBERSON OLIVEIRA DE ABREU
02019045730001022 49LUZINETE SANTOS DA SILVA ABREU
0101668652000161CONSELHO ESCOLAR DA ESCOLA ULISSES GUIMARAES
02016686520001612 10REGINA CLAUDIA RAMOS DA SILVA PESSOA
0101631137000107FORTERM * REPRESENTACOES E COMERCIO LTDA
02016311370001072 49ANTONIO MARCOS GONCALVES
02016311370001072 22IVANEIDE BERNARDO DE MENEZES
但是,要填充CSV列的行,我需要使用“固定宽度文件”对链接的每一行进行分离和测试
我必须遵循以下规则:
1.如果该行以“ 01”开头,则该行应包含公司的注册号及其名称。 示例: "0107397388000155ASSOCIACAO CULTURAL"
1.1- “ 01”表示此/
1.2-该行的下14个职位是公司代码-从第3个位置开始,到第16个结束-(07397388000155)/
1.3-以下150个职位为公司名称-从第17个职位开始,到第166个结尾-(ASSOCIACAO CULURAL)
和
2.如果该行以“ 02”开头,则将包含有关公司合作伙伴的信息。 示例: "02073973880001552 16MARIA DO SOCORRO RODRIGUES ALVES BRAGA"
/
2.1- “ 02”表示/
2.2-接下来的14个职位是公司注册代码-从职位3开始,到16(07397388000155)/
2.3-下一个数字是会员识别码,可以是1、2或3-在位置17开始和结束-(2)/
2.4-接下来的14个位置是用于标识该成员的另一个代码-从位置18开始,到31结束-(““-在这种情况下为空)/
2.5-接下来的两个位置是另一个标识该成员的代码-从位置32开始,以33(16)结尾/
2.6-最终的150个位置是合作伙伴的名字-从位置34开始,以183结尾(MARIA DO SOCORRO RODRIGUES ALVES BRAGA)
在这种情况下,一种可行的策略是将每个链接另存为TXT? 然后尝试分开职位? 还是有更好的方法来擦除固定宽度的文件?
使用scrapy
,可以将链接的内容作为流读取并处理,而无需保存到文件中。 scrapy
文档在这里
这里还有一个相关的问题: 如何使用Scrapy打开文件流进行读取?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.