使用jsoup解析html网页时,如果一个标签<a href=“javascript:getSearch(10)">[2]<a>怎么解析到这个href

使用jsoup解析html网页时,如果一个标签<a href=“javascript:getSearch(10)">[2]<a>怎么解析到这个href,第1张

其实你这个问题说简单也简单,说麻烦也麻烦,首先拼真实的url时,它是通过一个js方法实现的,只要用java代码模拟这个过程就OK了。
麻烦的是你这个URL中含有中文 ,传入时会乱码,导致查询结果为空。
不知道,我说的对不对,我们可以讨论一下。

这几天正在研究。废话不多说,直接上代码,自己研究的,通过迭代抓取。pageList就是抓取的分页页面的全部链接地址 。
其中Document doc = NetUtilsgetDocument(url);是jsoup抓取页面的基本 *** 作。
public class HtmlAnalsysTest3 {
static String url = ">

判断下一页的标示比如class一页页抓咯,比如下一页的class是next那么抓取可以简单的这样写:

// 抓取函数
grab(url) {
    var content = getPageContent(url);
    var $ = convertContentToJqueryObj(content);//将content装换为jQuery对象比如使用cheerio之类的
    var $next = $('next');
    //处理需要抓取的数据
    parseContent(content);
    // 判断是否有下一页 有则递归抓取
    if ($nextlength) {
        grab($nextattr('url'));
    }
}

Jsoup从Html文件中提取正文内容\x0d\示例代码:\x0d\Fileinput=newFile("/tmp/inputhtml");\x0d\Documentdoc=Jsoupparse(input,"UTF-8","/examplecom/");\x0d\\x0d\Elementcontent=docgetElementById("content");\x0d\Elementslinks=contentgetElementsByTag("a");\x0d\for(Elementlink:links){\x0d\StringlinkHref=linkattr("href");\x0d\StringlinkText=linktext();\x0d\}\x0d\jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的 *** 作方法来取出和 *** 作数据。\x0d\jsoup的主要功能如下:\x0d\1从一个URL,文件或字符串中解析HTML;\x0d\2使用DOM或CSS选择器来查找、取出数据;\x0d\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("关闭流出现异常!!!");
                }
            }
        }
    }


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

原文地址: https://outofmemory.cn/yw/13406667.html

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

发表评论

登录后才能评论

评论列表(0条)

保存