今天做项目时用到java抓取网页内容,本以为很简单的一件事但是还是让我蛋疼了一会,网上资料一大堆但是都是通过url抓取网页内容,但是我要的是读取本地的html页面内容的方法,网上找不到怎么办我瞬间了!

首先还是向大家讲解一下通过url抓取网页内容吧,通过正则表达式摘取title、js、css等网页元素,代码如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/**** @author yaohucaizi*/
public class Test {/*** 读取网页全部内容*/public String getHtmlContent(String htmlurl) {URL url;String temp;StringBuffer sb = new StringBuffer();try {url = new URL(htmlurl);BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "gbk"));// 读取网页全部内容while ((temp = in.readLine()) != null) {sb.append(temp);}in.close();} catch (final MalformedURLException me) {System.out.println("你输入的URL格式有问题!");me.getMessage();} catch (final IOException e) {e.printStackTrace();}return sb.toString();}/**** @param s* @return 获得网页标题*/public String getTitle(String s) {String regex;String title = "";List<String> list = new ArrayList<String>();regex = "<title>.*?</title>";Pattern pa = Pattern.compile(regex, Pattern.CANON_EQ);Matcher ma = pa.matcher(s);while (ma.find()) {list.add(ma.group());}for (int i = 0; i < list.size(); i++) {title = title + list.get(i);}return outTag(title);}/**** @param s* @return 获得链接*/public List<String> getLink(String s) {String regex;List<String> list = new ArrayList<String>();regex = "<a[^>]*href=(\"([^\"]*)\"|\'([^\']*)\'|([^\\s>]*))[^>]*>(.*?)</a>";Pattern pa = Pattern.compile(regex, Pattern.DOTALL);Matcher ma = pa.matcher(s);while (ma.find()) {list.add(ma.group());}return list;}/**** @param s* @return 获得脚本代码*/public List<String> getScript(String s) {String regex;List<String> list = new ArrayList<String>();regex = "<SCRIPT.*?</SCRIPT>";Pattern pa = Pattern.compile(regex, Pattern.DOTALL);Matcher ma = pa.matcher(s);while (ma.find()) {list.add(ma.group());}return list;}public List<String> getNews(String s) {String regex = "<a.*?</a>";Pattern pa = Pattern.compile(regex, Pattern.DOTALL);Matcher ma = pa.matcher(s);List<String> list = new ArrayList<String>();while (ma.find()) {list.add(ma.group());}return list;}/**** @param s* @return 获得CSS*/public List<String> getCSS(String s) {String regex;List<String> list = new ArrayList<String>();regex = "<style.*?</style>";Pattern pa = Pattern.compile(regex, Pattern.DOTALL);Matcher ma = pa.matcher(s);while (ma.find()) {list.add(ma.group());}return list;}/**** @param s* @return 去掉标记*/public String outTag(final String s) {return s.replaceAll("<.*?>", "");}public static void main(String[] args) {Test t = new Test();String content = t.getHtmlContent("http://www.taobao.com");//content = content.replaceAll("(<br>)+?", "\n");// 转化换行//content = content.replaceAll("<p><em>.*?</em></p>", "");// 去图片注释System.out.println(content);System.out.println(t.getTitle(content));List<String> a = t.getNews(content);List<String> news = new ArrayList<String>();for (String s : a) {news.add(s.replaceAll("<.*?>", ""));}System.out.println(news);//…… 获取js、css等操作省略}
}

后来我想了想我觉得读取本地和通过url读取原理不是一样的嘛,但是我尝试了好多种写法都不行,不是乱码问题就是报错,我该怎么办 老天就是这样捉弄人,功夫不负有心人当我尝试至999次时候突然眼前一亮,我成功实现读取本地html了 ……说真的代码不难但是你需要多次尝试,把我的代码分享给大家:

    /*** 抓取本地网页内容** @param filePath* @return*/public static String getHtmlContent(String filePath) {String temp;BufferedReader br;StringBuffer sb = new StringBuffer();try {br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "GB2312"));while ((temp = br.readLine()) != null) {sb.append(temp);}} catch (IOException e) {e.printStackTrace();}return sb.toString();}

本文由yaohucaizi原创 如需转载请注明出处!版权所有 侵权必究!

java抓取网页内容相关推荐

  1. java 抓取网页内容小工具

    之超同志今天问我会不会抓网页的内容,然后把一些表格整理成excel. 好吧,我是不会的,但是我想试试,结果还是可行的. 先说说他的需求吧,他需要把http://www.zjex.com.cn/view ...

  2. jsoup 获取html中body内容_jsoup实现java抓取网页内容

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据.jsoup ...

  3. java socket抓取资源_Java 通过 Socket 的形式抓取网页内容

    package com.hmw.net; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IO ...

  4. java socket 获取网页源代码_通过java.net.Socket 类抓取网页内容

    /** 文件名 : Firstsocket.java 描述 :通过 java.net.Socket 类访问一个web页面,并且返回结果 作者: 慈勤强 cqq1978@yeah.net 参考:http ...

  5. java抓取网站数据

    java 抓取网站数据 假设你需要获取51job 人才网上java 人才的需求数量,首先你需要分析51job 网站的搜索这 一块是怎么运作的,通过解析网页的源代码,我们发现了以下一些信息: 1. 搜索 ...

  6. java 抓取网页乱码_java抓取网页乱码问题的处理

    今天同事做了一个我们感觉很牛B的彩票预测程序,采用的是遗传算法实现,于是我"剽"来学习先,但是部署到我电脑上以后,就有问题了: 1.用她的抓取程序得到的网页内容出现乱码,导致数据无 ...

  7. Asp.Net 之 抓取网页内容

    一.获取网页内容--html ASP.NET 中抓取网页内容是非常方便的,而其中更是解决了 ASP 中困扰我们的编码问题. 需要三个类:WebRequest.WebResponse.StreamRea ...

  8. python beautifulsoup抓取网页内容_利用Python和Beautiful Soup抓取网页内容

    利用Python和Beautiful Soup抓取网页内容 Posted on 2012-08-09 00:08 SamWei 阅读(381) 评论(1) 编辑 收藏 Python 3中提供了url打 ...

  9. java爬取网页内容 简单例子(2)——附jsoup的select用法详解

    [背景] 在上一篇博文 java爬取网页内容 简单例子(1)--使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则 ...

最新文章

  1. mysql在linux下的安装
  2. Eclipse 代码风格配置
  3. java基础知识回顾之javaIO类总结
  4. 【转】集合类说明及区别
  5. 07 总结ProgressDialog 异步任务
  6. 前端学习(2499):Property or method “name“ is not defined on the instance but referenced during render. Ma
  7. 数据仓库入门(实验3)添加主键和关系
  8. BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!...
  9. Java 拷贝,你能说出个 123 么?
  10. 解决问题 1474 个,Flink 1.11 究竟有哪些易用性上的改善?
  11. JWT全面解读、使用步骤
  12. 我的团长我的团分集剧情介绍
  13. 怎么样matlab做玫瑰花,Matlab画的玫瑰花
  14. python中reversed与reverse的区别
  15. html dom反选,Dom操作--全选反选
  16. TYVJ 1089 smrtfun
  17. 个人Javaweb项目介绍
  18. MT6572M不支持导出720P视频
  19. 神谕(oracle) 蝙蝠女,《DC漫画英雄OL》全程新手试玩体验
  20. Spark 实现常用的map reduce功能 (Java版本)

热门文章

  1. 【企业管理】迅雷的企业管理模式
  2. 护士站之log4net
  3. LS工作日志11/10 打包发布ipa
  4. 我国网络安全等级保护制度的主要内容
  5. MAC中TexLive+texmaker+JabRef引用文章
  6. 写一个随机森林插补风力发电功率数据的程序
  7. Shader山下(四)法线贴图
  8. PHP的WEB系统从单机到分布式集群的演进
  9. Unity接入AWS S3过程,AWS SDK for Unity 踩坑记录
  10. javaweb房屋中介系统设计要求