guoqp 发表于 2022-10-23 11:47:51

分享HTML如何进行客户端解析再使用

我们经常会遇到这样的问题,通过HTTP访问命令爬回来的HTML如何使用?

比如要取得某个元素的值,或者某几个元素的值,甚至是想要取得某个表格中某个或者全部值

当然按照最笨的办法就是进行文本查找,虽然笨是笨了点,但还是能用的,但这种方式真的太笨,反正我不太推荐,今天讲的是我们能不能把它当成一个网页用JQ来取值,那不是就太方便了吗

我是一个JS菜鸟,甚至连JQ都不会用,因此查了很了资料,也在一些网友的指点下逐渐找到了方向,这其中一个关键就是JQ里的parseHTML功能,它可以将HTML转换成DOM,就是网页文档,让你可以像操作网页一样去操作这个HTML。

如何爬HTML就不讲了,拿到HTML后,首先将其转换为DOM对象
//先将采集而来的HTML变量用JS获取到值

var cellValue = Forguncy.CommandHelper.getVariableValue("html");
//再将HTML转换为DOM对象
var $html = $($.parseHTML(cellValue));


下边的操作就是一个正常网页操作的过程了,我作一个演示,抛砖引玉吧,我演示的是从按键精灵后台将注册码抓到本地表格中
首先找到注册码这个元素对象,其实就是一个表格
var $tbody = $html.find("#tbRegCode");
再从这个对象中找到所有的注册码行,其实就是表格的所有行,也就是TR,因为TR行是有很多行的,要取出所有行的值就要用到JQ的EACH方法,在EACH方法中使用函数完成值的获取与加入到表的功能。

var $tr = $($tbody.find("tr").each(function () {
    var $td = $(this).find("td");

    var id = $(this).attr("tagId");
    var regcode = $(this).attr("tagRegCode");
    var appname = $td.get(2).outerText;
    var regcodestate = $td.get(6).outerText;
    var enddate = $td.get(10).outerText;
    var regcodenumber = $td.get(8).outerText;
    var bz = $td.get(11).outerText;


    var listview = Forguncy.Page.getListView("表格1");
    //添加新行
    listview.addNewRow(
      {
            注册码ID: id,
            注册码编号: regcode,
            应用名称: appname,
            注册码状态: regcodestate,
            到期时间: enddate,
            注册码开数: regcodenumber,
            注册码备注: bz
      });
}));


这样就将HTML中的所有注册码提取到我们的表格中了,至于表格如何保存,想如何使用就不在我们讨论话题内了,祝大家一次成功!



137294886 发表于 2022-10-23 13:49:08

思路很好,请上一个demo,谢谢分享
页: [1]
查看完整版本: 分享HTML如何进行客户端解析再使用