js网页内容抓取分析

2024-06-07 01:18
文章标签 分析 抓取 js 网页内容

本文主要是介绍js网页内容抓取分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

jsoup网页内容抓取分析(2)

  • 博客分类: 
  • java爬虫搜索
jsoup java搜索爬虫 java数据抓取

     针对上一篇写的内容很简单,只是给大家抛出了有一个工具可以用来分析网页的内容,做java搜索爬虫使用,实际的使用并没有怎么介绍,现在这篇文章就来介绍一下用法,可能分析的不是很全面,欢迎批评。经过我的测试使用,jsoup分析网页结构和内容的功能远远强大于HtmlParser,无论是获取整个页面的文本,还是分析特定内容的网页结构,都是十分的方便。

 

        附上链接:jsoup官网:http://jsoup.org/ ,中文jsoup:http://www.open-open.com/jsoup/

     下面写些我的使用记录,希望大家如果能从我的方法中得到启发,鉴于本人从事开发工作不久,内容可能写的不是很好。

 

     jsoup数据获取有两大方法:1.通过分析dom模型的网页标签和元素,2.select元素选择器,类似jquery方式(功能很强大,还支持正则表达式)。网页tag标签有body,div,table,tr,td,a,等等。元素的属性有,href,title,width,height,color等等,元素属性的值就是,例如:href=“www.baidu.com”, 值就是www.baidu.com 。width=“98%” 值就是98%

     

      下面就以分析http://www.iteye.com首页的每日资讯为例,抓取每日资讯的标题和url地址,详细写出分析步骤:

 

       1.用chrome浏览器的元素审查,分析页面的结构,得到每日资讯是div class=<main_left>层里面

 

     2.写程序分析,首先根据url获取div文本,再来根据文本对内容进行分析

 

Java代码   收藏代码
  1. /** 
  2.  * 根据jsoup方法获取htmlContent 
  3.         * 加入简单的时间记录 
  4.  * @throws IOException  
  5.  */  
  6. public static String getContentByJsoup(String url){  
  7.     String content="";  
  8.     try {  
  9.         System.out.println("time=====start");  
  10.         Date startdate=new Date();  
  11.         Document doc=Jsoup.connect(url)  
  12.         .data("jquery""java")  
  13.         .userAgent("Mozilla")  
  14.         .cookie("auth""token")  
  15.         .timeout(50000)  
  16.         .get();  
  17.         Date enddate=new Date();  
  18.         Long time=enddate.getTime()-startdate.getTime();  
  19.         System.out.println("使用Jsoup耗时=="+time);  
  20.         System.out.println("time=====end");  
  21.         content=doc.toString();//获取iteye网站的源码html内容  
  22.         System.out.println(doc.title());//获取iteye网站的标题  
  23.     } catch (IOException e) {  
  24.         e.printStackTrace();  
  25.     }  
  26.     System.out.println(content);   
  27.     return content;  
  28. }  

 

     3. 根据整个每日资讯所在的div层,获取那段内容(精确获取)

 

Java代码   收藏代码
  1.        /** 
  2.  * 使用jsoup来对文档分析 
  3.         * 获取目标内容所在的目标层 
  4.         * 这个目标层可以是div,table,tr等等 
  5.  */  
  6. public static String getDivContentByJsoup(String content){  
  7.     String divContent="";  
  8.     Document doc=Jsoup.parse(content);  
  9.     Elements divs=doc.getElementsByClass("main_left");  
  10.     divContent=divs.toString();  
  11.       //System.out.println("div==="+divContent);  
  12.     return divContent;  
  13. }  

    

     4.根据获取的目标层得到你所要的内容(title,url地址...等等)

 

      

Java代码   收藏代码
  1. /** 
  2.      * 使用jsoup分析divContent 
  3.      * 1.获取链接 2.获取url地址(绝对路径) 
  4.      */  
  5.     public static void getLinksByJsoup(String divContent){  
  6.         String abs="http://www.iteye.com/";  
  7.         Document doc=Jsoup.parse(divContent,abs);  
  8.         Elements linkStrs=doc.getElementsByTag("li");  
  9.         System.out.println("链接==="+linkStrs.size());  
  10.         for(Element linkStr:linkStrs){  
  11.             String url=linkStr.getElementsByTag("a").attr("abs:href");  
  12.             String title=linkStr.getElementsByTag("a").text();  
  13.             System.out.println("标题:"+title+" url:"+url);  
  14.         }  
  15.     }  

 

     5.加入main方法里面执行测试

 

Java代码   收藏代码
  1. /** 
  2.      * @method 测试获取内容程序 
  3.      */  
  4.     public static void main(String[] args) throws IOException {  
  5.           
  6.         /** 
  7.          * 执行分析程序 
  8.          */  
  9.         String url="http://www.iteye.com/";  
  10.         String HtmlContent=getContentByJsoup(url);  
  11.         String divContent=getDivContentByJsoup(HtmlContent);  
  12.         getLinksByJsoup(divContent);  
  13.     }  

 

     6.附上结束语:jsoup功能很好很强大,附上的只是简单的使用方法,还有很多需要完善的内容,我其实使用也不到几天的时间。还有就是select功能还是很好用的,具体参考官方文档,写的非常的通俗易懂!附上程序源码和jsoup的jar包

 原文链接:http://cjp1989.iteye.com/blog/1812285

这篇关于js网页内容抓取分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037769

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Python结合requests和Cheerio处理网页内容的操作步骤

《Python结合requests和Cheerio处理网页内容的操作步骤》Python因其简洁明了的语法和强大的库支持,成为了编写爬虫程序的首选语言之一,requests库是Python中用于发送HT... 目录一、前言二、环境搭建三、requests库的基本使用四、Cheerio库的基本使用五、结合req

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实