Android Jsoup,为什么我无法获取正确的img src

2024-01-19

我无法获得正确的 img src。 这是我想要获取的 HTML。该图像是数据方案 URI。

<img class="rg_i Q4LuWd tx8vtf" src="data:image/jpeg;base64,9j/4AAQSkZJR ~~~ TOO LONG ~~~/Z" data-deferred="1" jsname="Q4LuWd" alt="大阪の保護猫カフェ - SAVE CAT CAFE" data-iml="610.9050000086427" data-atf="true">

而且,这是我的代码。

val url = "https://www.google.com/search?q=cat&sxsrf=ALeKk01jWgnZ1Jwok_XfrhRYTdkwZecETg:1587538774281&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiy3dTluvvoAhUPyosBHQtMAP8Q_AUoAXoECA8QAw&biw=1280&bih=616"

Jsoup.connect(url).get().select("img")

那么其结果如下。

<img class="rg_i Q4LuWd tx8vtf" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="  ~~same above~~/>

“data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==”是 1px × 1px gif 图像。 当我通过jsoup获取html时,它是不同的图像src。正确的图像类型是 jpeg,但其结果是 gif。 我可以得到另一个标签作为标签。所以我觉得我的代码还不错。 Jsoup获取img src有什么设置吗?如何获取同类型图像src。


这有点棘手,因为您要查找的数据就在里面script标签,所以你必须迭代所有script tags.
接下来您必须检查每个元素是否包含文本jpeg;base64 since jpeg出现在一些不包含 base64 数据的其他元素中。
我使用过 java 和 eclipse,并且在输出方面遇到了一些问题(对于 ide 来说太长并且被转义了,所以/显示为\/,但我相信你能够解决它:

Document doc = Jsoup.connect(url).
            userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0").get();
Elements images = doc.select("script");
    for (Element image : images) {
        if (image.html().contains("jpeg;base64")) {
            System.out.println(image.html());
            System.out.println("--------------");
        }
    }

最后一件事 - 添加您的userAgent字符串到请求中,否则您可能会从服务器得到不同的响应。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Jsoup,为什么我无法获取正确的img src 的相关文章

随机推荐