目录
最近有个业务需求把网页不规则的表格转成json数据,因为网上没有这一类的数据提取只能自己写了,xpath一个个解析太麻烦了,代码冗余且可以说是一个表格就要写一个解析规则,两个字 ” 麻烦 !“ ,给大家分享一下需要的自取。
由于没考虑太多的特殊情况,只把基本的不规则表格解析了,同层级-同行的归属key也没有写,看下图, 如 “十孙子” 与 “大孙子” 我的代码没有将其归纳进大儿子
演示表格一
正常数据应该是下图所示,然而我代码无法解析上图表格,由于我过于懒惰就没有写了,各位需要的话可以在我的代码上进行修改,该好了记得发我一份,想白嫖!。
var ddd = {
"太爷爷":{
"大儿子":{
"大孙子":{
"曾孙子1":"1岁"
},
"十孙子":{
"曾孙子2":"2岁"
}
}
}
}
我能正常解析的表格如下图,各位可以去对一对数据。
演示表格二
{
'草帽团情况': {
'船长': '厨师',
'路飞': '山治',
'航海士': '剑士',
'娜美': '索隆',
'船医': '乔巴'
},
'乔巴': [{
'身高': '出生地',
'90cm(人兽型)': '磁鼓王国',
'身份': '悬赏金',
'草帽一伙、船医': '50贝里-100贝利'
},
{
'身高': '恶魔果实',
'90cm(人兽型)': '动物系人人果实',
'身份': '喜欢的食物',
'草帽一伙、船医': '棉花糖等所有甜食'
},
{
'身高': '讨厌的食物',
'90cm(人兽型)': '所有辣味食物(因为不甜)',
'身份': '恩人',
'草帽一伙、船医': '希鲁鲁克'
}],
'罗罗诺亚·索隆': {
'身高': '178cm-181cm',
'悬赏金': '3亿2000万贝利',
'职务': '剑士',
'霸气': '武装色霸气、见闻色霸气',
'性别': '男',
'挚友': '古伊娜'
},
'蒙奇·D·路飞': [{
'船名': '类型',
'黄金梅利号': '海贼',
'团队': '梦想',
'草帽团': '海贼王'
},
{
'船名': '身高',
'黄金梅利号': '172cm-174cm',
'团队': '恶魔果实',
'草帽团': '橡胶果实'
},
{
'别名': '草帽小子、第五位海上皇帝、路西(德雷斯罗萨篇)、路飞太郎(和之国篇)、路飞之海(和之国篇,相扑)'
},
{
'介绍': '路飞性格积极乐观,爱憎分明,宁死不屈,十分重视伙伴与朋友,对任何危险的事物都超感兴趣。和其他传统的海贼所不同的是,他并不会为了追求财富而杀戮,而是享受着身为海贼的冒险和自由。'
},
{
'船名': '故乡',
'黄金梅利号': '东海-哥亚王国-风车村',
'团队': '悬赏金',
'草帽团': '15亿贝利'
},
{
'船名': '生日',
'黄金梅利号': '',
'团队': '喜欢的岛屿',
'草帽团': '有肉的岛屿'
},
{
'船名': '喜欢的季节',
'黄金梅利号': '夏季',
'团队': '外文名',
'草帽团': ''
},
{
'船名': '讨厌的食物',
'黄金梅利号': '加雅岛上的樱桃派',
'团队': '爷爷',
'草帽团': '蒙奇·D·卡普'
},
{
'船名': '义兄',
'黄金梅利号': '波特卡斯·D·艾斯',
'团队': '父亲',
'草帽团': '蒙奇·D·龙'
},
{
'养母': '卡利·达旦'
}],
'性别': '女',
'身高': '169cm-170cm',
'喜欢的东西': '橘子、金钱',
'三围': '98/58/88cm',
'悬赏金': '1600万-6600万贝利',
'出身': '欧伊科特王国→东海·可可亚西村',
'巴基': {
'别名': '小丑巴基、千两道化、小丑之王'
},
'布鲁克': {
'别名': '鼻歌、灵魂之王、尸体男爵'
},
'妮可·罗宾': {
'别名': '恶魔之子',
'悬赏金': '1亿3000贝利'
}
}
下图表格也能解析成JSON
演示表格三
{'白胡子团': {'妹子': {'姓名': '怀迪贝', '别名': '冰之魔女', '性别': '女', '悬赏金': '未知'}, '队长': '波特卡斯·D·艾斯', '霸气': '身份'}, '又是草帽团情况': {'前期加入的': {'钢琴家': '布鲁克', '考古学家': '罗宾'}, '船长': '狙击手', '路飞': '乌索普', '冤种副手': '舵手', '索隆': '甚平'}, '航海指针': {'永久指针': '其他指针', '有': '有', '保管在': '保管在', '娜美手上': '娜美手上'}, '草帽团情况': [{'厨师': '剑士', '山治': '索隆'}, {'厨师': '船医', '山治': '乔巴'}, {'厨师': '航海士', '山治': '娜美'}], '草帽团船长': {'姓名': '路飞'}, '又是草帽团': {'船长': '路飞', '舵手': '甚平'}, '船匠': {'姓名': '弗兰奇'}, '没了': '没了没了没了'}
代码是用Python写的,各位需要的话去自取链接在下面,麻烦帮我点点star。感谢!不定期分享一些代码和逆向思路。
未经允许禁止转载!!!!!!