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问题吗? 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日
把json用在线解析格式化以下,然后用jsonpath提取 gov.cn? chengccc 发表于 2021-4-10 22:50
把json用在线解析格式化以下,然后用jsonpath提取
我用审核元素看了一下这个json文件,返回的好像就是网页的主干部分(包括了css在内的网页源码。)
好像无济于事。{:301_973:} hj170520 发表于 2021-4-10 22:55
我用审核元素看了一下这个json文件,返回的好像就是网页的主干部分(包括了css在内的网页源码。)
好像 ...
那还是用xpath提取原网站的把
我看了,你可以把json文件存为text格式,然后用正则提取,最后进行数据存储 qianshang666 发表于 2021-4-10 23:07
我看了,你可以把json文件存为text格式,然后用正则提取,最后进行数据存储
对,我也是这个思路,但是有的时候她一个句子分了好几个“部分”,不是完整的一句话,要拼凑起来。感觉还是麻烦!! chengccc 发表于 2021-4-10 23:02
那还是用xpath提取原网站的把
试过用xpath提取网页,但是发现表格的数据提取不到。好像返回的是json文件,必须从json里调出那个文本然后用正则 主要还是要解析docClob里的html代码 可以先想办法(正则之类的)把无用的标签删除掉(里面大多都是写文本格式的样式设置,应该是表格用富文本编辑框画出来的),保留最基本的table标签元素<tr><td>这些,然后再处理;Python我不太清楚,百度搜html转CSV会有一些Python的代码,过滤掉无用信息后再用Python处理