有时候我们在使用网络通信爬取网络数据的时候,想要完美的显示出来,却总是不尽如人意,我在爬取四六级成绩的时候,遇到了一个问题,抓取的数据需要一个合理的显示,最好是像网页上的结果一样,简洁明了,我在将抓取的代码直接截取数据部分,放入后,发生了错乱的效果(吐槽下99宿舍,四六级成绩居然还加密,js解密代码看了半天不知其意)。
原因
我们截取的数据区代码如下:
<table border="0" align="center" cellpadding="0" cellspacing="6" class="cetTable">
<tr>
<th>姓名:</th>
<td>XXX</td>
</tr>
<tr>
<th>学校:</th>
<td>XXXXXX</td>
</tr>
<tr>
<th>考试类别:</th>
<td>英语六级</td>
</tr>
<tr>
<th>准考证号:</th>
<td>XXXXXXXXXXXXXXX</td>
</tr>
<tr>
<th>考试时间:</th>
<td>2016年06月</td>
</tr>
<tr>
<th valign="top">总分:</th>
<td valign="top" class="fontBold">
<span class="colorRed">
381
</span>
<br /><span class="color666">听力:</span>
130
<br /><span class="color666">阅读:</span>
141
<br /><span class="color666">写作与翻译:</span>
110
</td>
</tr>
</table>
而Html代码的结构并不是如此,所以我们利用Html.fromHtml() 的时候并不能正确的显示
所以我们可以将这个数据的html代码附加到一个完整的html框架中,并且给修饰的class添加层叠样式表,用一个WebView加载出来。补充后的代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.cetTable{ margin:0 auto;}
.cetTable th{ font-weight:bold; text-align:right;}
.cetTable td{text-align:left;}
.color333, a.color333{color:#333333;}
.color666, a.color666{color:#666666;}
.color999, a.color999{color:#999999;}
.colorRed, a.colorRed,a.colorRed:link,a.colorRed:visited{ color:#D94840;}
</style>
</head>
<body>
<table border="0" align="center" cellpadding="0" cellspacing="6" class="cetTable">
<tr>
<th>姓名:</th>
<td>XXXX</td>
</tr>
<tr>
<th>学校:</th>
<td>XXXXXXXX</td>
</tr>
<tr>
<th>考试类别:</th>
<td>XXXX</td>
</tr>
<tr>
<th>准考证号:</th>
<td>XXXXXXXXX</td>
</tr>
<tr>
<th>考试时间:</th>
<td>2016年06月</td>
</tr>
<tr>
<th valign="top">总分:</th>
<td valign="top" class="fontBold">
<span class="colorRed">
381
</span>
<br /><span class="color666">听力:</span>
130
<br /><span class="color666">阅读:</span>
141
<br /><span class="color666">写作与翻译:</span>
110
</td>
</tr>
</table>
</body>
</html>
java代码如下:
mResult.loadDataWithBaseURL(null, content,
"text/html", "utf-8", null);
最后结果如下: