JAva爬虫類はネット上の画像を捕まえる
6797 ワード
ツールの紹介
jsoup htmlテキストを分析する強力なツールhttpclient java httpリクエストを処理するオープンソースライブラリ
コード#コード#
注釈をつけたから、簡単に読めるはずだ.
ここでのコードはデザインモードを考慮していませんが、単純に画像をキャプチャする機能を実現するために勝手に書かれたコードなので、真似しないでください.
jsoup htmlテキストを分析する強力なツールhttpclient java httpリクエストを処理するオープンソースライブラリ
コード#コード#
注釈をつけたから、簡単に読めるはずだ.
public class HTMLparser {
private static final String category = "D:/JAVA/Projects/";
private final static String[] useragent = {"Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0","Mozilla/4.0(compatible;MSIE 8.0;Windows NT 6.0)"};
public static void main(String[] args) {
try{
Document doc = Jsoup.connect("http://blog.csdn.net/nvnnv/article/details/51068319")
// , =。=
.userAgent(useragent[0]) //
.timeout(10000)
.get();
String title = doc.className();
System.out.println(title);
Element head = doc.head();
Element body = doc.body();
Elements son = body.children();
List list = new ArrayList<>(); // URL
reseachImg(body, list);
new HTMLparser.DowanImg(list).start();
}catch (IOException e){
// do something on informing
e.printStackTrace();
}
}
/*
: URL , , ,
*/
public static String clearBlank(String s){
StringBuilder stringBuilder = new StringBuilder(s);
int l = stringBuilder.length();
for(int i=0; iif(stringBuilder.charAt(i) == 32){
stringBuilder.deleteCharAt(i);
l--;
}
}
return stringBuilder.toString();
}
/*
: body , URL, jsoup , ,
*/
public static void reseachImg(Element root, List list){
Elements son = root.children();
if(son == null){
return;
}else{
for (Element e : son){
reseachImg(e, list);
if (e.tagName().equals("img")){
list.add(clearBlank(e.attr("src")));
}
}
}
}
/*
: URL
*/
static int a = 0;
public static void newFile(String url) throws MalformedURLException, IOException{
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
CloseableHttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
InputStream input = entity.getContent();
BufferedInputStream bufferedInput = new BufferedInputStream(input);
File file = new File(category + a + ".png"); //category ,
FileOutputStream output = new FileOutputStream(file);
byte[] imgByte = new byte[1024*2];
int len = 0;
while((len = bufferedInput.read(imgByte, 0, imgByte.length)) != -1){
output.write(imgByte, 0, len);
}
input.close();
output.close();
System.out.println(url + " .");
a++;
}
public static class DowanImg extends Thread{
private List list;
public DowanImg(List l){
list = l;
}
public void run(){
for(String s: list){
try{
newFile(s);
}catch (IOException e){
e.printStackTrace();
}
}
}
}
}
ここでのコードはデザインモードを考慮していませんが、単純に画像をキャプチャする機能を実現するために勝手に書かれたコードなので、真似しないでください.