如何将这段JavaScript代码改写为Android中Jsoup可用代码?
问题解决:将Chrome控制台JS代码转为Jsoup可用代码
原JS代码逻辑
原JS代码用于获取页面中第一个<ul>元素下的第3个<img>标签的alt属性值:
document.querySelector('ul').getElementsByTagName('img')[2].getAttribute('alt')
错误代码问题分析
你的改写代码存在两处核心问题:
doc.select("ul").tagName("img")用法错误,tagName()是获取元素标签名的方法,无法用来筛选子元素getElementsByAttribute("alt")会返回所有带alt属性的元素集合,不是获取当前元素的alt属性值
正确的Jsoup实现代码
提供两种等价实现方式:
写法一:CSS选择器简洁写法
Document doc = Jsoup.connect(url).get(); // 直接通过选择器定位到ul下的第3个img(nth-child从1开始计数,对应原JS的索引2) String altText = doc.select("ul img:nth-child(3)").attr("alt");
写法二:模拟JS链式调用逻辑
Document doc = Jsoup.connect(url).get(); // 完全对应原JS的步骤:取第一个ul → 取其下所有img → 取第3个 → 获取alt属性 String altText = doc.select("ul").first() .getElementsByTag("img") .get(2) .attr("alt");
注意事项
- 如果页面存在多个
<ul>,doc.select("ul").first()和原JS的querySelector('ul')逻辑一致,只会取第一个<ul> - 若目标
<img>是<ul>的后代而非直接子元素,两种写法都能正常匹配
内容的提问来源于stack exchange,提问作者Rishi Raj Dixit
相关产品推荐
相关产品推荐

