1. 程式人生 > >java爬蟲--jsoup簡單的表單抓取案例

java爬蟲--jsoup簡單的表單抓取案例

分析需求:
某農產品網站的農產品價格抓取


頁面展示如上:


標籤展示如上:

分析發現每日價格行情包括了蔬菜,水果,肉等所有的資訊,所以直接抓每日行情的內容就可以實現抓取全部資料。

軟體環境:eclipse,Jsoup包

 密碼:bmrr

抓取表單比較簡單,直接用select選擇標籤即可。

實現

完整程式碼如下:

package com.jsoup;

import java.io.BufferedWriter;
import java.io.FileWriter;
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 Shichang {

	public static void main(String[] args) throws IOException {
		String url = "";
		Document doc=null;
		BufferedWriter bw = null;
		
		//檔案輸出路徑
		String path="f:\\cai.txt";
		
		for (int i = 1; i <= 10; i++) {
			url = "http://www.xinfadi.com.cn/marketanalysis/0/list/" + i + ".shtml";
			
			//測試用的url
			// url = "http://www.xinfadi.com.cn/marketanalysis/0/list/1.shtml";
			
			//模擬瀏覽器
			doc = Jsoup.connect(url)
					.userAgent(
							"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31")
					.timeout(6000 * 1000).get();
			//找到名為hq_table的table
			Elements el = doc.select("table.hq_table");
			// System.out.println(el);
			
			//遍歷hq_table中的tr
			for (Element el2 : el) {
				
				Elements el3 = el2.select("tr.tr_color");
				
				//遍歷tr中的td
			for (Element el4 : el3) {
					Elements el5 = el4.select("td");
					
					String rs = el5.text().toString().replace(" ", "\t");
					//輸出到控制檯
					System.out.println(rs);
					
					//輸出到本地檔案
					bw = new BufferedWriter(new FileWriter(path,true));
					bw.write(rs);
					bw.newLine();
					bw.flush();
					bw.close();
				}

			}
		}
	}
}