好吧我自己解决了 解决思路如下: 第三个tr点击的时候其实是有反应的 是有向服务器请求数据的 不过不知道为啥htmlunit没有给我做修改页面代码的操作 不过既然有发request 那就会有response 既然有response response里就一定有我要的数据 首先先: MainService.page = subGroup.getValue().click(); //模拟点击 向服务器发送请求 用一个HtmlPage对象接着 WebResponse res = MainService.page.getWebResponse(); //获取最近请求的响应 String html = res.getContentAsString(); //将响应变为字符串 接下来变为字符串之后 就可以做想做的操作了 因为我只是要一个URL地址 所以 接下来我做了切割字符串的操作 得到我要的url int endNum = html.indexOf(subGroup.getValue().asText()); //操作字符串 拿到url String str = html.substring(0, endNum); int beginNum = str.lastIndexOf(URL的特有起始字段); String str2 = html.substring(beginNum, endNum); int buffer = str2.length()-str2.indexOf("\""); String url = html.substring(beginNum, endNum-buffer); 因为网页代码的缘故 我有一些特别的操作 不过上面几行代码就是从response里获得url的过程 这个过程要根据网页的不同具体分析的 接下来只要将得到的url送给getPage方法就能得到正常的页面了 MainService.page = wc.getPage(url); 以上就是解决方案 虽然绕了一个圈子 但还是顺利的解决了 这个方法可以完全的模拟浏览器操作(个人认为 因为服务器端并不知道你的url是怎么来的 服务器端只知道你请求了这个url) 所以若网站有什么防止爬url的机制的话 貌似也能绕过 话说这帖子一直都是我自己在玩 自导自演
51,411
社区成员
86,021
社区内容
加载中
试试用AI创作助手写篇文章吧