国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

用java去爬取別人的網頁上的內容

2024-04-27 15:19:17
字體:
來源:轉載
供稿:網友

在爬取別人的東西之前,我們需要做一些處理

1.我們先在eclipse中創建一個工程

3. http://mvnrepository.com/artifact/org.jsoup/jsoup/1.10.2,進入這個網站,將下面這段代碼復制下來

4.將copy的代碼照如下的方式處理

5.點擊保存,然后jsoup這個包就被我們引入,這時候就可以正式開始從網頁上爬取別人的資料了

package com;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.*;import java.util.ArrayList;import java.util.List;import java.util.Scanner;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;public class getPIcDemo {	//1.從多圖片的網頁中獲取眾多的圖片的地址,url代表網頁的網址	public static List getmanyPicAdress(String Url) {		List<String> list=new ArrayList<>();		try {//我們先將url網絡里面的			Document document=Jsoup.connect(Url).get();			//我們預先知道這個網頁里面的圖片的class屬性的“relative block works-detail hover-none works-img-box”是唯一的,			//所以就得到了這些元素			//這些元素里面就包含了想要的信息					Elements elements=document.getElementsByAttributeValue("class", "relative block works-detail hover-none works-img-box");//			在elements中我們獲取了多個element,element中就包含了網頁鏈接			for (int i = 0; i < elements.size(); i++) {//				循環輸出element,				Element element=elements.get(i);//				這時候,element.attr("href")就可以將href里面包含的網頁鏈接內容寫出來				list.add(element.attr("href"));			}					} catch (IOException e) {			// TODO Auto-generated catch block			e.PRintStackTrace();		}		return list;//我們用鏈表將所有的href里面的數據儲存起來,最好不要用數組,因為我們不知道href數據有多少個	}	//	2.第一個方法,我們用getmanyPicAdress方法獲取到了圖片的詳細地址,現在我們要做的,就是從圖片的詳細地址中獲取圖片的下載地址//	將第一個方法獲得的鏈表值作為參數傳入到函數中	public static List getPicAdress(List list) {		List<String> list1=new ArrayList<>();//		用循環讀取一個個的鏈表里的內容(圖片的詳細地址)		for(int i=0;i<list.size();i++){		try {//			新建一個string,用來存儲list里面的數據			String st=(String)list.get(i);//			將string讀取的數據存入到document中			Document document =Jsoup.connect(st).get();//			因為我們找到的關于圖片下載地址的唯一標識符,是class="works-img",先用elements將圖片的下載地址找到			Elements elements=document.getElementsByAttributeValue("class", "works-img");//			再用element讀出elements的數據				for(int m=0;m<elements.size();m++){					Element element=elements.get(m);//					最后用新的一個鏈表將數據裝起來,并且返回					list1.add(element.attr("src"));				}		} catch (IOException e) {						e.printStackTrace();		}		}		System.out.println(list1);//		返回數據所獲得的圖片下載地址的值		return list1;	}		//3.用下載地址,下載圖片//	將第二個方法返回的裝載圖片下載地址的鏈表作為參數返回鏈表	public static void test(List list) {				URL myurl;		InputStream is = null;		OutputStream os = null;				try {//			我們還是要用循環將鏈表里面的數據一個個讀取出來,讓后一個個的去下載			for (int i = 0; i < list.size(); i++) {//				還是用一個新的字符串去存儲list讀出來的數據				String string=(String) list.get(i);				//				因為涉及到圖片的存儲問題,名字顯然不能一樣,所以就讓從圖片的末尾的信息作為文件名//				從最后一個“/”開始讀取,				int beginIndex=string.lastIndexOf("/");//				文件名就以最后一個/開始,直到結束				String picName=string.substring(beginIndex+1);				//				下列是根據鏈接讀取圖片的信息并儲存的方法,不再贅述				myurl=new URL(string);				is=myurl.openConnection().getInputStream();				byte byte1[]=new byte[102400];				os=new FileOutputStream(picName);				int len;				while((len=is.read(byte1))!=-1){					os.write(byte1, 0, len);				}				os.flush();			}			os.close();			is.close();		} catch (MalformedURLException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}		public static void main(String[] args) {		test(getPicAdress(getmanyPicAdress("http://www.nipic.com/photo/jingguan/index.html")));	}}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 砚山县| 大冶市| 桃源县| 灵川县| 札达县| 麻阳| 红河县| 余姚市| 巴中市| 上林县| 大埔区| 泰顺县| 松溪县| 蒙城县| 南昌县| 新河县| 永德县| 双峰县| 宜丰县| 赞皇县| 峨眉山市| 田林县| 同心县| 滨海县| 雷波县| 康保县| 周宁县| 南京市| 镇平县| 苍溪县| 清镇市| 霍邱县| 永济市| 高阳县| 涟源市| 曲松县| 儋州市| 冷水江市| 华宁县| 麦盖提县| 上林县|