jsoup如何获取到html里的javascript里定义的数据

张树恒 发布于 2013/11/28 22:09
阅读 9K+
收藏 2

在返回的html里有许多的javascript,里面定义了返回的数据,如

<script type="text/javascript">
    wx.cgiData={
        pageIdx : 0,
            pageCount : 1,
            pageSize : 10,
            groupsList : ({"groups":[{"id":0,"name":"未分组","cnt":8},{"id":1,"name":"黑名单","cnt":0},{"id":2,"name":"星标组","cnt":0}]}).groups,
                        friendsList : ({"contacts":[{"id":983333120,"nick_name":"洪洪","remark_name":"","group_id":0}]}).contacts,
                                    currentGroupId : '',
            type : "0" * 1 || 0,
            userRole : '1' * 1,
            verifyMsgCount : '' * 1,
            totalCount : '8' * 1
    };

怎样获取到friendsList这个json数据呢

加载中
0
Timco
Timco
javascript也是标签,同样可以用select或getElementsByTag(“script”)。遍历时element.text(),看是否包含friendlist字符串吧。 你这分析的是否是人人网?
0
xyxo
xyxo

jsoup不支持javascript的解析的吧??只能select出这个script,但script的具体内容是处理不来的,可能需要另外想办法处理的,比如正则?

楼主的这段script,用一下subString,就大概可以弄出一个纯种JSON了,然后再处理呗!

O
OaShare
java结合正则怎么写
0
CapJes
CapJes

java可以使用COMMON-LANG包中的StringUtils.substringBewteen(JS,“friendsList : (”,“).contacts,”)方法。

0
苏生不惑
苏生不惑

微信里返回的数据用php匹配:

if (preg_match('%contacts\"\:([\s\S]*?)(?=}\))%', $response, $match)) {
	$result= json_decode($match[1], true);
}



0
张树恒
张树恒

将返回值转换为string用subtring处理了

0
O
OaShare
java结合正则要怎么写@xyxo
返回顶部
顶部