博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用jsoup进行网页内容抓取
阅读量:4671 次
发布时间:2019-06-09

本文共 3369 字,大约阅读时间需要 11 分钟。

对网页内容的抓取比较的感兴趣,于是就简单的学习了一下,如果不使用任何的框架去抓取网页的内容,感觉有点难度,我就简单点来吧,这里所使用的jsoup框架,抓取网页的内容与使用jquery选择网页的内容差不多,上手很快。下面就简单的介绍一下吧!

首先是获取网络资源的方法:

/**     * 获取网络中的超链接     *      * @param urlStr     *            传入网络地址     * @return 返回网页中的所有的超链接信息     */    public String getInternet(String urlStr, String encoding) {        URL url = null;        URLConnection conn = null;        String nextLine = null;        StringBuffer sb = new StringBuffer();        // 设置系统的代理信息        Properties props = System.getProperties();        props.put("proxySet", "true");        props.put("proxyHost", "10.27.16.212");        props.put("proxyPort", "3128");        System.setProperties(props);        try {            // 获取网络资源            url = new URL(urlStr);            // 获取资源连接            conn = url.openConnection();            conn.setReadTimeout(30000);//设置30秒后超时            conn.connect();            BufferedReader reader = new BufferedReader(new InputStreamReader(                    conn.getInputStream(), encoding));            // 开始读取网页信息获取网页中的超链接信息            while ((nextLine = reader.readLine()) != null) {                sb.append(nextLine);            }        } catch (Exception e) {            e.printStackTrace();        }        return sb.toString();    }

我们在获取了网络资源之后,我们就可以根据自己的需求筛选出对自己有用的资源了,下面开始抓取资源:

public static void main(String[] args) {        MavenTest test = new MavenTest();        try {            String html = test.getInternet(    "http://www.weather.com.cn/html/weather/101020100.shtml#7d","UTF-8");            //将html文档转换为Document文档            Document doc = Jsoup.parse(html);            //获取class为.weatherYubaoBox的div的元素            Elements tableElements = doc.select("div.weatherYubaoBox");//            System.out.println(tableElements.html());            //获取所有的th元素            Elements thElements = tableElements.select("th");            //打印出日期的标题信息            for (int i = 0; i < thElements.size(); i++) {                System.out.print("                "+thElements.get(i).text() + "\t");            }            // 输出标题之后进行换行            System.out.println();            //获取表格的tbody            Elements tbodyElements = tableElements.select("tbody");            for (int j = 1; j < tbodyElements.size(); j++) {                //获取tr中的信息                Elements trElements = tbodyElements.get(j).select("tr");                for (int k = 0; k < trElements.size(); k++) {                    //获取单元格中的信息                    Elements tdElements = trElements.get(k).select("td");                    //根据元素的多少判断出白天和夜晚的                    if (tdElements.size() > 6) {                        for (int m = 0; m < tdElements.size(); m++) {                            System.out.print(tdElements.get(m).text() + "\t");                        }                        // 白天的数据打印完成后进行换行                        System.out.println();                    }else{                        for(int n =0; n < tdElements.size(); n++){                            System.out.print("\t"+tdElements.get(n).text());                        }                        //打印完成夜间的天气信息进行换行处理                        System.out.println();                    }                }            }        } catch (Exception e) {            e.printStackTrace();        }    }

运行的结果如下:

最后附上框架的地址:http://www.open-open.com/jsoup/selector-syntax.htm

转载于:https://www.cnblogs.com/tangkai/p/3510689.html

你可能感兴趣的文章
手把手教您扩展虚拟内存
查看>>
android-samples-mvp
查看>>
oracle 11g r2安装
查看>>
关于自关联1
查看>>
存储控制器、MMU、flash控制器介绍
查看>>
hdu-1814(2-sat)
查看>>
自我反省
查看>>
反射,得到Type引用的三种方式
查看>>
pl sql练习(2)
查看>>
Problem B: 判断回文字符串
查看>>
谷歌浏览器,添加默认搜索引擎的搜索地址
查看>>
数据结构化与保存
查看>>
C# .net 获取程序运行的路径的几种方法
查看>>
为什么需要Docker?
查看>>
国内5家云服务厂商 HTTPS 安全性测试横向对比
查看>>
how to control project
查看>>
转 python新手容易犯的6个错误
查看>>
第四节 -- 列表
查看>>
Python入门学习笔记4:他人的博客及他人的学习思路
查看>>
webstorm里直接调用命令行
查看>>