java jsoup url获取的数据和网页的不同

java jsoup url获取的数据和网页的不同,第1张

方法/步骤 本次经验是通过导入外部Jar进行对网页数据进行抓取,以下是我工程的分布图。 本例子中是使用Jquery进行处理页面事件 页面展示 后台是在siteproxyjsp中进行处理 5 最后将这其中需要的几个文件部署在此工程中去

Jsoup从Html文件中提取正文内容

示例代码:

File input = new File("/tmp/inputhtml");

Document doc = Jsoupparse(input, "UTF-8", "/examplecom/");

Element content = docgetElementById("content");

Elements links = contentgetElementsByTag("a");

for (Element link : links) {

String linkHref = linkattr("href");

String linkText = linktext();

}

jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的 *** 作方法来取出和 *** 作数据。

jsoup的主要功能如下:

1 从一个URL,文件或字符串中解析HTML;

2使用DOM或CSS选择器来查找、取出数据;

3 可 *** 作HTML元素、属性、文本;

//json页面返回格式{"data":{"blogs":[{"albid":865218,"id":12323,

orgjsonJSONObject

 

//返回多个json里面的id值

    public static List  findimgCrawIdList(String url)  {

        List imgCrawIdList=new ArrayList();

        try {

            JSONObject jo = getJsonObj(url,"utf-8");

            JSONObject menu = jogetJSONObject("data");

            JSONArray jsonArray =  menugetJSONArray("blogs");

            for (int i = 0; i < jsonArraylength(); i++) {

                imgCrawIdListadd(jsonArraygetJSONObject(i)get("id"));

            }

        } catch (Exception e) {

            // TODO Auto-generated catch block

            eprintStackTrace();

        }

        return imgCrawIdList;

    }

 

/

      根据网址,返回JSONObject对象

      注:只适合请求响应为json格式网址

      @param src            来源网址

      @param code            编码方式

      @author chitianxiang $22th March, 2012 - 2:42 pm

     /

    private static JSONObject getJsonObj(String src, String code) {

        InputStreamReader reader = null;

        BufferedReader in = null;

        try {

            URL url = new URL(src);

            URLConnection connection = urlopenConnection();

            connectionsetConnectTimeout(1000);

            reader = new InputStreamReader(connectiongetInputStream(), code);

            in = new BufferedReader(reader);

            String line = null;        //每行内容

            int lineFlag = 0;        //标记: 判断有没有数据

            StringBuffer content = new StringBuffer();

            while ((line = inreadLine()) != null) {

                contentappend(line);

                lineFlag++;

            }

            return lineFlag == 0  null : new orgjsonJSONObject(contenttoString());

        } catch (SocketTimeoutException e) {

            Systemoutprintln("连接超时!!!");

            return null;

        } catch (JSONException e) {

            Systemoutprintln("网站响应不是json格式,无法转化成JSONObject!!!");

            return null;

        } catch (Exception e) {

            Systemoutprintln("连接网址不对或读取流出现异常!!!");

            return null;

        } finally {

            if (in != null) {

                try {

                    inclose();

                } catch (IOException e) {

                    Systemoutprintln("关闭流出现异常!!!");

                }

            }

            if (reader != null) {

                try {

                    readerclose();

                } catch (IOException e) {

                    Systemoutprintln("关闭流出现异常!!!");

                }

            }

        }

    }

从父级不同点来定位,比如:

<div id=“id1”><p class ="xg1">XXXX</div>

<div id="id2"><p class ="xg1">XXXX</div>

。。。。

要定位第一个可以:

Elements e2 = docSelect("div#id1>pxg1");

根据java网络编程相关的内容,使用jdk提供的相关类可以得到url对应网页的html页面代码。

针对得到的html代码,通过使用正则表达式即可得到我们想要的内容。

比如,我们如果想得到一个网页上所有包括“java”关键字的文本内容,就可以逐行对网页代码进行正则表达式的匹配。最后达到去除html标签和不相关的内容,只得到包括“java”这个关键字的内容的效果。

从网页上爬取的流程和爬取内容的流程基本相同,但是爬取的步骤会多一步。

需要先用img标签的正则表达式匹配获取到img标签,再用src属性的正则表达式获取这个img标签中的src属性的url,然后再通过缓冲输入流对象读取到这个url的信息,配合文件输出流将读到的信息写入到本地即可。

这几天正在研究。废话不多说,直接上代码,自己研究的,通过迭代抓取。pageList就是抓取的分页页面的全部链接地址 。

其中Document doc = NetUtilsgetDocument(url);是jsoup抓取页面的基本 *** 作。

public class HtmlAnalsysTest3 {

static String url = ">

以上就是关于java jsoup url获取的数据和网页的不同全部的内容,包括:java jsoup url获取的数据和网页的不同、Jsoup从Html文件中提取正文内容、jsoup能爬取json数据吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9708640.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存