java/android 如何在 url 的字符串上使用 contains()
java/android how to use contains() on a string of a url
我认为这应该相当简单,但我是一名新手程序员,无论出于何种原因,这都无法正常工作
我想做什么
我正在尝试使用 jsoup 抓取一个网站,我想获取 x 和 y 之间的所有 URL,但如果有图像则不行,
我在做什么
我正在获取 x 和 y 之间的所有 URL,但其中一些是图像我正在使用 .contains() 方法检查它是否启动 "https" 来实现此目的,这可以获取所有links 我想要,但其中很多是图像 links 以 png jpg 或 gif 结尾但是当我添加嵌套的 if 块以检查它是 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");
}
}
}
我尝试了什么
我知道所有的 url 都可以从 href 标签中获取,但这会导致太多不相关的 links 我也尝试获取最后三个字符的子字符串并检查它们
String sub = content.substring(content.length() - 3);
//and checking it in my if statement like
sub.equals("png")
我尝试使用 jsoup 检查它是否有 img 标签,但这没有用,我还尝试检查 link 的 header 以设置布尔值并在之前检查它尝试将 link 添加到这样的列表中
URLConnection connection = new URL("http://foo.bar/w23afv")
.openConnection();
String contentType = connection.getHeaderField("Content-Type");
boolean image = contentType.startsWith("image/");
但这给了我一个 SSL 握手错误,我仔细阅读并试图解决这个错误,但我发现最简单的方法是没有信任管理器,我不喜欢这个想法,
我对此进行了很多搜索,我认为这可能是字符串具有不同字符的情况,显然我可以使用 Regex 解决它,但正如我所说的那样,我是一个初学者,我正在努力理解或解决这个问题有帮助吗?
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
条件满足,ok。重点是它走得更远。内容不包含 jpg
,因此调用 else
块并将 content
添加到您的 LinkedList。
你需要做的是将第二个和第三个 if
更改为 else if
。还可以考虑使用 startsWith()
和 endsWith()
.
我认为这应该相当简单,但我是一名新手程序员,无论出于何种原因,这都无法正常工作
我想做什么
我正在尝试使用 jsoup 抓取一个网站,我想获取 x 和 y 之间的所有 URL,但如果有图像则不行,
我在做什么
我正在获取 x 和 y 之间的所有 URL,但其中一些是图像我正在使用 .contains() 方法检查它是否启动 "https" 来实现此目的,这可以获取所有links 我想要,但其中很多是图像 links 以 png jpg 或 gif 结尾但是当我添加嵌套的 if 块以检查它是 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");
}
}
}
我尝试了什么
我知道所有的 url 都可以从 href 标签中获取,但这会导致太多不相关的 links 我也尝试获取最后三个字符的子字符串并检查它们
String sub = content.substring(content.length() - 3);
//and checking it in my if statement like
sub.equals("png")
我尝试使用 jsoup 检查它是否有 img 标签,但这没有用,我还尝试检查 link 的 header 以设置布尔值并在之前检查它尝试将 link 添加到这样的列表中
URLConnection connection = new URL("http://foo.bar/w23afv")
.openConnection();
String contentType = connection.getHeaderField("Content-Type");
boolean image = contentType.startsWith("image/");
但这给了我一个 SSL 握手错误,我仔细阅读并试图解决这个错误,但我发现最简单的方法是没有信任管理器,我不喜欢这个想法, 我对此进行了很多搜索,我认为这可能是字符串具有不同字符的情况,显然我可以使用 Regex 解决它,但正如我所说的那样,我是一个初学者,我正在努力理解或解决这个问题有帮助吗?
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
条件满足,ok。重点是它走得更远。内容不包含 jpg
,因此调用 else
块并将 content
添加到您的 LinkedList。
你需要做的是将第二个和第三个 if
更改为 else if
。还可以考虑使用 startsWith()
和 endsWith()
.