- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为这应该相当简单,但我是一名新手程序员,无论出于何种原因,这都无法正常工作
我正在尝试做什么
我正在尝试使用 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/
我是一名优秀的程序员,十分优秀!