hj170520 发表于 2021-4-10 22:43

python爬虫:如何针对网页返回的疑似乱码的“json”文本进行信息提取

本帖最后由 hj170520 于 2021-4-11 00:38 编辑

如题:如何针对网页返回的疑似乱码的“json”进行信息提取

原网址:http://www.cbirc.gov.cn/branch/beijing/view/pages/common/ItemDetail.html?docId=213889&itemId=1855

返回的"json"网址为:http://www.cbirc.gov.cn/cn/static/data/DocInfo/SelectByDocId/data_docId=213889.json

需要做的就是将原网址的”表格“内容提取出来做成一个csv文件。我的思路可能比较狭隘了,那就是用lxml包里的etree进行网页页面的提取,但这样可能需要花点时间。

不如一个json文件来的方便,但是返回的json文件疑似乱码(可能是包含了css文件的一个东西,信息不好提取)

请问有大佬知道怎么解决这类疑似“乱码”的json问题吗?

netspirit 发表于 2021-4-10 23:59

hj170520 发表于 2021-4-10 23:48
主要是这个表格数据怎么提取呢?
import os,re,requests,time
from bs4 import BeautifulSoup
def download():
    response=requests.get(r'http://www.cbirc.gov.cn/cn/static/data/DocInfo/SelectByDocId/data_docId=213889.json')
    text=response.json()['data']['docClob']
    with open(r'c:\测试json里面的html.html','w',encoding='utf-8') as f:
      f.write(text)
    doc1=BeautifulSoup(text,'lxml')
    for i in doc1.find_all('tr'):
      print(i.get_text())

if __name__ == '__main__':
    download()


输出结果:
行政处罚决定书文号京银保监罚决字〔2019〕10号
被处罚当事人个人姓名——
单位名称天津银行北京三元桥支行
法定代表人(主要负责人)姓名董鲁克
主要违法违规事实(案由)流动资金贷款业务严重违反审慎经营规则
行政处罚依据《银行业监督管理法》第四十六条
行政处罚决定责令天津银行北京三元桥支行改正,并给予40万元罚款的行政处罚。
作出处罚决定的机关名称北京银保监局
作出处罚决定的日期2019年3月25日


chengccc 发表于 2021-4-10 22:50

把json用在线解析格式化以下,然后用jsonpath提取

wangzai 发表于 2021-4-10 22:53

gov.cn?      

hj170520 发表于 2021-4-10 22:55

chengccc 发表于 2021-4-10 22:50
把json用在线解析格式化以下,然后用jsonpath提取

我用审核元素看了一下这个json文件,返回的好像就是网页的主干部分(包括了css在内的网页源码。)
好像无济于事。{:301_973:}

chengccc 发表于 2021-4-10 23:02

hj170520 发表于 2021-4-10 22:55
我用审核元素看了一下这个json文件,返回的好像就是网页的主干部分(包括了css在内的网页源码。)
好像 ...

那还是用xpath提取原网站的把

qianshang666 发表于 2021-4-10 23:07

我看了,你可以把json文件存为text格式,然后用正则提取,最后进行数据存储

hj170520 发表于 2021-4-10 23:09

qianshang666 发表于 2021-4-10 23:07
我看了,你可以把json文件存为text格式,然后用正则提取,最后进行数据存储

对,我也是这个思路,但是有的时候她一个句子分了好几个“部分”,不是完整的一句话,要拼凑起来。感觉还是麻烦!!

hj170520 发表于 2021-4-10 23:10

chengccc 发表于 2021-4-10 23:02
那还是用xpath提取原网站的把

试过用xpath提取网页,但是发现表格的数据提取不到。好像返回的是json文件,必须从json里调出那个文本然后用正则

咸鱼灭 发表于 2021-4-10 23:26

主要还是要解析docClob里的html代码

Freedom_XY_ 发表于 2021-4-10 23:26

可以先想办法(正则之类的)把无用的标签删除掉(里面大多都是写文本格式的样式设置,应该是表格用富文本编辑框画出来的),保留最基本的table标签元素<tr><td>这些,然后再处理;Python我不太清楚,百度搜html转CSV会有一些Python的代码,过滤掉无用信息后再用Python处理
页: [1] 2 3
查看完整版本: python爬虫:如何针对网页返回的疑似乱码的“json”文本进行信息提取