如何处理html中的链接不完整的问题

在使用框架的过程中虽然框架的作者封装了一些获取html文件中对于文本超链接有一些定义好的方法进行链接的获取,
例如:

links() 选择所有链接 html.links()

但是在实际使用过程中有一些链接不具备一般特性,有些网页的跳转需要js进行加载才能准确访问完整的url,所以需要单独使用正则进行部分url的获取,然后再进行完整url的组装,
例如:

  1. <a href="javascript:void(0)" onclick="_showTop('/sss/sssss/ssssss.ssss?id=202cb962ac59075b964b07152d234b70&amp;orgEnOrCh=Ch');">XXXXXXXXXX</a>

可以看到这个标签里的超链接是需要使用js才能完整访问的,所以我们需要先定位到a标签然后在使用正则表达式才能获取部分url的信息,然后我们在组装出来一个完整的url地址才能往下进行任务。
代码示例:

  1. //获取结构化数据的url
  2. String urlStr = selectable.regex("id\\=\\w+").toString();
  3. System.out.println(urlStr);
  4. //组装url放入待爬取队列
  5. page.addTargetRequest("https://sss.sss.sss.cn/sss/sssss/ssssss.ssss?" + urlStr);

然后就能正常的使用框架了,正则表达式是一个很强大的功能,要学会使用,有时候会碰到不能很快的书写出来正确的正则表达式,我推荐一个在线的正则表达式测试链接(我最开始学的时候用的挺多的,我感觉帮助挺大的,在线正则表达式测试

然后java使用正则需要注意的是java里面”\“相当于是一个”\”,这个是需要特别注意的地方,其他更详细的知识直接百度就行了,有很多这方面的资料。