分析需求:
某农产品网站的农产品价格抓取
网站链接:点击打开链接
页面展示如上:
标签展示如上:
分析发现每日价格行情包括了蔬菜,水果,肉等所有的信息,所以直接抓每日行情的内容就可以实现抓取全部数据。
软件环境: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(); } } } } }参考:http://www.open-open.com/jsoup/