美文网首页
Jsoup初探

Jsoup初探

作者: 游园拾忆 | 来源:发表于2018-02-01 17:02 被阅读11次
    • jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

    • 下载地址:jsoup-1.11.2.jar

    • jsoup中文文档:http://www.open-open.com/jsoup/

    一个小实例:(获取:鸡病专业网 每日鸡蛋价格汇总)

    import java.io.IOException;
    import org.jsoup.Connection;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    
    public class GetWebContent {
    
        public static final String url = "http://www.jbzyw.com";
    
        /**
         * 获取网页源码
         * 
         * @param url
         */
        public static Document getDocument(String url) {
            Connection conn = null;
            Document doc = null;
            // 有的抓取会报错403.解决方法:设置header,模仿浏览器访问。
            try {
                conn = Jsoup.connect(url).timeout(1000 * 60);
                conn.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
                conn.header("Accept-Encoding", "gzip, deflate, sdch");
                conn.header("Accept-Language", "zh-CN,zh;q=0.8");
                conn.header("User-Agent",
                        "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");
                doc = conn.get();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return doc;
        }
    
        public static void main(String[] args) {
            // 获取网页源码
            Document doc = getDocument(url);
            // 查看布局,解析页面,定位需要的数据
            Element content = doc.getElementById("tab02");// 根据id获取对象
            Elements links = content.getElementsByTag("a");// 根据‘标签’获取对象集
            // 遍历Elements
            for (Element link : links) {
                String href = link.attr("href");// 获取某一属性
                String title = link.attr("title");// 获取某一属性
                if (title.contains("汇总")) {
                    Document desc = getDocument(url + href);
    
                    Elements contents = desc.getElementsByClass("content");// 根据class获取对象集
                    Element contentItem = contents.get(0);
                    Elements contentdDIV = contentItem.getElementsByTag("div");// 根据‘标签’获取对象集
                    Elements contentdImg = contentItem.getElementsByTag("img");// 根据‘标签’获取对象集
    
                    // 走势图
                    if (contentdImg.size() > 0 && !contentdImg.get(0).attr("src").contains("http:")) {
                        System.out.println(url + contentdImg.get(0).attr("src"));
                    }
    
                    // content-文本
                    System.out.println(title);
                    String[] prices = contentdDIV.get(0).text().split(" ");
                    for (String price : prices) {
                        if (price.contains("地区")) {
                            System.out.println(price);
                        }
                    }
                }
            }
        }
    
    }
    

    相关文章

      网友评论

          本文标题:Jsoup初探

          本文链接:https://www.haomeiwen.com/subject/xzndzxtx.html