本文实例讲述了JAVA获取任意http网页源代码。分享给大家供大家参考,具体如下:

JAVA获取任意http网页源代码可实现如下功能:

1. 获取任意http网页的代码

2. 获取任意http网页去掉HTML标签的代码

Webpage类:

/**

* 网页操作相关类

*/

package test;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* @author winddack

*

*/

public class Webpage {

private String pageUrl;//定义需要操作的网页地址

private String pageEncode="UTF8";//定义需要操作的网页的编码

public String getPageUrl() {

return pageUrl;

}

public void setPageUrl(String pageUrl) {

this.pageUrl = pageUrl;

}

public String getPageEncode() {

return pageEncode;

}

public void setPageEncode(String pageEncode) {

this.pageEncode = pageEncode;

}

//定义取源码的方法

public String getPageSource()

{

StringBuffer sb = new StringBuffer();

try {

//构建一URL对象

URL url = new URL(pageUrl);

//使用openStream得到一输入流并由此构造一个BufferedReader对象

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), pageEncode));

String line;

//读取www资源

while ((line = in.readLine()) != null)

{

sb.append(line);

}

in.close();

}

catch (Exception ex)

{

System.err.println(ex);

}

return sb.toString();

}

//定义一个把HTML标签删除过的源码的方法

public String getPageSourceWithoutHtml()

{

final String regEx_script = "

final String regEx_style = "

final String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式

final String regEx_space = "\\s*|\t|\r|\n";//定义空格回车换行符

String htmlStr = getPageSource();//获取未处理过的源码

Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);

Matcher m_script = p_script.matcher(htmlStr);

htmlStr = m_script.replaceAll(""); // 过滤script标签

Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);

Matcher m_style = p_style.matcher(htmlStr);

htmlStr = m_style.replaceAll(""); // 过滤style标签

Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);

Matcher m_html = p_html.matcher(htmlStr);

htmlStr = m_html.replaceAll(""); // 过滤html标签

Pattern p_space = Pattern.compile(regEx_space, Pattern.CASE_INSENSITIVE);

Matcher m_space = p_space.matcher(htmlStr);

htmlStr = m_space.replaceAll(""); // 过滤空格回车标签

htmlStr = htmlStr.trim(); // 返回文本字符串

htmlStr = htmlStr.replaceAll(" ", "");

htmlStr = htmlStr.substring(0, htmlStr.indexOf("。")+1);

return htmlStr;

}

}

调用:

Webpage page=new Webpage();

page.setPageUrl("http://www.baidu.com");

String code=page.getPageSourceWithoutHtml();

System.out.println(code);

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

希望本文所述对大家java程序设计有所帮助。

java取网页源码_Java获取任意http网页源代码的方法相关推荐

  1. java取字符串首字母_java 获取中文字符的首字母

    原理: GB2312编码中的中文是按照拼音排序的 注意: 一些生僻的字无法获得正确的首字母,原因是这些字都是后加入的. import java.io.UnsupportedEncodingExcept ...

  2. java微博系统源码_JAVA仿微博系统(JAVA毕业设计含源码和运行教程)

    前言 课设毕设源码收集已上传到github,包括:C,C#,C++,JAVA,PHP 等源码,更多源码在整理中.地址:https://github.com/52JDK/Source-Collectio ...

  3. Java绘画板源码_Java 绘图板 示例源码下载(画板)

    Java 绘图板 示例源码下载(画板) java 2020-8-21 下载地址 https://www.codedown123.com/36795.html package minidrawpad; ...

  4. java 线程池 源码_java线程池源码分析

    我们在关闭线程池的时候会使用shutdown()和shutdownNow(),那么问题来了: 这两个方法又什么区别呢? 他们背后的原理是什么呢? 线程池中线程超过了coresize后会怎么操作呢? 为 ...

  5. java list addall源码_Java集合:ArrayList源码分析

    其实我看到已有很多大佬写过此类文章,并且写的也比较清晰明了,那我为何要再写一遍呢?其实也是为了加深本身的印象,巩固本身的基础html (主要是不少文章没有写出来我想知道的东西!!!​!!!!)java ...

  6. java开发利器 源码_Java开发的利器: 反编译工具 JD-GUI

    老赵说起来也能算个Java程序员,可是写过的Java代码并不多,可老赵实实在在是从程序员干起的.虽然肚子里也装了不少的东西,可作为一件乐此不疲的事情,就是看那些所谓"高人"的代码. ...

  7. java 并发框架源码_Java并发编程高阶技术-高性能并发框架源码解析与实战

    Java并发编程高阶技术-高性能并发框架源码解析与实战 1 _0 Z' @+ l: s3 f6 r% t|____资料3 Z9 P- I2 x8 T6 ^ |____coding-275-master ...

  8. java单机版软件源码_Java五子棋单机版源码分享

    初学JavaGUI编程,就写了一个小游戏–五子棋. 目前只实现了单机版,任何事情都是从简制作的,有问题请大牛们不吝指教啊. 此处的棋盘和棋子都未用图片,全部都是使用Java中的Graphics画出来的 ...

  9. java入侵检测源码_Java Web中的入侵检测及简单实现

    作者:EasyJF开源团队 大峡 一.简介 在Java Web应用程中,特别是网站开发中,我们有时候需要为应用程序增加一个入侵检测程序来防止恶意刷新的功能,防止非法用户不断的往Web应用中重复发送数据 ...

最新文章

  1. nginx 403 forbidden 二种原因
  2. 大数据全体系年终总结
  3. stm32 TIM2 重映射
  4. CTFshow 文件包含 web82
  5. 关于保存状态的Fragment,setRetainInstance(true)
  6. mysql gui vim_vim(一): 小技巧
  7. mysql注入5.0以上_[Injection]对MYSQL 5.0服务器以上版本注入
  8. Python Itsdangerous
  9. python批量读取文件内容_Python之批量读取文件【面试必学】
  10. Facebook 重金悬赏 Hermes 和 Spark AR 漏洞
  11. arduino连接12864LCD方法
  12. 临床基因组分析相关数据库汇总
  13. Windows命令行快速启动快捷方式
  14. 统计学的Python实现-014:几何平均数
  15. 解决HP无线键盘无法连接的问题
  16. java,png,jpg,如何合并图片进行盖章,并且对印章的位置进行定位。
  17. 回味宋朝——文化的盛世
  18. 树莓派(Raspberry pi) 使用Pi Imager安装烧录操作系统
  19. 教程:这个难到几乎无人通关的游戏,在它面前就是渣!
  20. 【Ubuntu疑难杂症】无法定位软件包?

热门文章

  1. IntelliJ IDEA for Mac在MacOS模式下的编辑快捷键(Editing Shortcut)
  2. Maven的依赖插件
  3. html关于超链接的问题,关于超链接的一些问题
  4. python特征选择pso_粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)
  5. java stopself_然后,即使我停止了服务,Context.startForegroundService()也没有调用Service.startForeground()...
  6. python django开发网站项目难吗_用django开发网站时遇到的问题
  7. 有c基础学java多久_有c十十基础的自学java语言每天6小时要多长时间?
  8. es修改type名称_ElasticSearch如何修改索引字段
  9. python刷题_11.学习Python,刷题才能让你感受到快(差)乐(距)!
  10. 10 张程序员喜爱的壁纸,需要自取~