gpt4 book ai didi

java/android 如何在 url 字符串上使用 contains()

转载 作者:行者123 更新时间:2023-12-02 02:56:30 24 4
gpt4 key购买 nike

我认为这应该相当简单,但我是一名新手程序员,无论出于何种原因,这都无法正常工作

我正在尝试做什么

我正在尝试使用 jsoup 抓取网站,我想获取 x 和 y 之间的所有 URL,但如果有图像则不获取,

我在做什么

我正在获取 x 和 y 之间的所有 URL,但其中一些是图像我使用 .contains() 方法来实现此目的,检查它是否以“https”开头,这可以获取我想要的所有链接,但是其中很多是以 png jpg 或 gif 结尾的图像链接,但是当我添加嵌套的 if block 来检查它是否是 png 或 jpg 等并且如果是的话就不将其添加到列表中,它们仍然被添加到我的列表中,

            Elements metaElems = doc.select("meta");

for (Element metaElem : metaElems) {
String content = metaElem.attr("content");
if (content.contains("https")){

if (content.contains("png")){
buffer.append("PNG");
}
if (content.contains("gif")){
buffer.append("GIF");
}
if (content.contains("jpg")){
buffer.append("JPG");
}
else {
linklist.add(content + "\r\n");
}
}
}

我尝试过的

我知道所有的网址都可以从 href 标签中获取,但这会导致太多不相关的链接,我也尝试过获取最后三个字符的子字符串并像

                    String sub = content.substring(content.length() - 3);
//and checking it in my if statement like
sub.equals("png")

我尝试使用jsoup来检查它是否有img标签,但这没有用,我还尝试检查链接的标题以设置 boolean 值并在尝试将链接添加到列表之前检查它,如下所示

URLConnection connection = new URL("http://foo.bar/w23afv")
.openConnection();
String contentType = connection.getHeaderField("Content-Type");
boolean image = contentType.startsWith("image/");

但这给了我一个 SSL 握手错误,我阅读并尝试解决该错误,但我发现最简单的方法是没有信任管理器,我不喜欢这个想法,我对此进行了很多搜索,我认为这可能是字符串具有不同字符的情况,显然我可以使用正则表达式来解决它,但如上所述,我是一个初学者,我正在努力理解或解决这个问题有什么帮助吗?

最佳答案

if (content.contains("png")){
buffer.append("PNG");
}
if (content.contains("gif")){
buffer.append("GIF");
}
if (content.contains("jpg")){
buffer.append("JPG");
}
else {
linklist.add(content + "\r\n");
}

现在假设 content 包含 png。第一个 if 条件满足,好的。重点是它走得更远。内容不包含 jpg,因此调用 else block ,并将 content 添加到您的 LinkedList。

您需要做的是将第二个和第三个if更改为else if。另请考虑使用 startsWith()endsWith()

关于java/android 如何在 url 字符串上使用 contains(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42972621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com