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

相关文章

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放