获取网页表格异常情况分析处理

首先各位同学如果想获取网页中的表格,请先熟读以下两篇帖子,了解基本原理以及方法。
详:http://support.i-search.com.cn/article/1538019514108
详:http://support.i-search.com.cn/article/1535445990145

从上面的帖子中可以看到想要获取网页中的表格,我们首先要获取到网页中的 TABLE:nth-of-type(1) 标签, 但是近期在处理的一个网页表格中,我们无法获取 table 标签。
获取网页表格异常情况分析处理
‘body > DIV:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(1) > DIV:nth-of-type(5) > DIV:nth-of-type(1) > DIV:nth-of-type(2)’

同样我们尝试之前帖子的方法获取网页表格信息,读取了一个 TD 格式的表格,随后使用 pandas 去获取表格信息并且打印发现始终报错
‘gbk’ codec can’t encode character ‘\xa0’ in position 3555: illegal multibyte sequence
获取网页表格异常情况分析处理

刚开始以为是表格获取的有问题,所以又通过设计器封装的 getTableHtml 的方法,如下:
def getTableHtml(param=None):

param='{"activite":"getText","target":{"selector":".k-grid-content","tag":"TABLE","title":"交易明细"}}'
result = getHtml(param)           #其中k-grid-content 为表格的类名,可通过浏览器开发者工具获取得到

return result.obj

发现还是同样的情况,依旧报
‘gbk’ codec can’t encode character ‘\xa0’ in position 3555: illegal multibyte sequence
所以我们百度了多种方法尝试将’\xa0’去除掉,但是始终无法获取到表格的 dataframe
后来在论坛上找到了http://support.i-search.com.cn/article/1530262694765 这篇文章,通过 5.0 设计器,尝试了以下,发现同样的 table 表格,居然可以读取出来。并且在 7.0 设计器自带的 python 编译器也能正常获取 dataframe。于是判断是否是表格格式有异常导致设计器编译器无法读取呢,随后借助以上帖子的方法,先将读取的表格前后加上’Table’标签,将读取的表格格式先进行了转换,然后再次读取转换后的 list,发现可以正常获取表格数据了,如下代码:
import pandas as pd

import numpy as np

import os

from ubpa.base_ie import *;

lv_data = "table" + lv_data + “table” #table 要加 <>,如截图

df = pd.read_html(lv_data)

df_list = np.array(df[0]).tolist()

print(df_list)

获取网页表格异常情况分析处理
其中全局函数为上面 getTableHtml。

运行后就获取到我们想要的结果:
获取网页表格异常情况分析处理

备注:这次的表格获取的情况比较特殊,大部分的网页表格都可以通过开头提到的两篇帖子的方法获取到,所以建议大家好好学习一下,很多场景会用的到。
另外要感谢一下研发部谭彬彬的协助及方案。