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

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Python屏幕抓取和录制的详细代码示例

《Python屏幕抓取和录制的详细代码示例》随着现代计算机性能的提高和网络速度的加快,越来越多的用户需要对他们的屏幕进行录制,:本文主要介绍Python屏幕抓取和录制的相关资料,需要的朋友可以参考... 目录一、常用 python 屏幕抓取库二、pyautogui 截屏示例三、mss 高性能截图四、Pill

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳