我尝试使用JSoup来获取此URL的内容http://www.aw20.co.uk/images/logo.png,即image logo.png,并将其保存到文件中.到目前为止,我已使用JSoup连接到http://www.aw20.co.uk并获取文档.然后我找到了我正在寻找的图像的绝对网址,但现在我不知道如何获得实际图像.所以我希望有人能指出我正确的方向吗?无论如何我也可以使用Jsoup.connect("http://www.aw20.co.uk/images/logo.png").get(); 得到图像?
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JGet2 {
public static void main(String[] args) {
try {
Document doc = Jsoup.connect("http://www.aw20.co.uk").get();
Elements img = doc.getElementsByTag("img");
for (Element element : img) {
String src = element.absUrl("src");
System.out.println("Image Found!");
System.out.println("src attribute is: " + src);
if (src.contains("logo.png") == true) {
System.out.println("Success");
}
getImages(src);
}
}
catch (IOException e) {
e.printStackTrace();
}
}
private static void getImages(String src) throws IOException {
int indexName = src.lastIndexOf("/");
if (indexName == src.length()) {
src = src.substring(1, indexName);
}
indexName = src.lastIndexOf("/");
String name = src.substring(indexName, src.length());
System.out.println(name);
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*ley 10
如果您不想将其解析为HTML,则可以使用Jsoup来获取任何URL并将数据作为字节获取.例如:
byte[] bytes = Jsoup.connect(imgUrl).ignoreContentType(true).execute().bodyAsBytes();
Run Code Online (Sandbox Code Playgroud)
ignoreContentType(true)设置是因为否则Jsoup将抛出一个异常,即内容不是HTML可解析的 - 在这种情况下可以,因为我们bodyAsBytes()用来获取响应体,而不是解析.
有关更多详细信息,请查看Jsoup Connection API.
Jsoup不是为下载网址内容而设计的.
由于您可以使用第三方库,因此您可以尝试使用apache common IO将给定URL的内容下载到文件:
FileUtils.copyURLToFile(URL source, File destination);
Run Code Online (Sandbox Code Playgroud)
它只有一条线.