java 使用正则表达式从网页上提取网站标题

如何从网页上抓取有价值的东西?看懂了下面的程序(非常简单),想从网页上抓取什么信息(标题、内容、Email、价格等)就能抓取什么信息。

package catchhtml;
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;

public class GetHtmlTitle {

    public GetHtmlTitle(String htmlUrl){
        System.out.println("/n------------开始读取网页(" + htmlUrl + ")-----------");
        String htmlSource = "";
        htmlSource = getHtmlSource(htmlUrl);//获取htmlUrl网址网页的源码
        System.out.println("------------读取网页(" + htmlUrl + ")结束-----------/n");
        System.out.println("------------分析(" + htmlUrl + ")结果如下-----------/n");
        String title = getTitle(htmlSource);
        System.out.println("网站标题: " + title);
    }

    /**
     * 根据网址返回网页的源码
     * @param htmlUrl
     * @return
     */
    public String getHtmlSource(String htmlUrl){
        URL url;
        StringBuffer sb = new StringBuffer();
        try{
            url = new URL(htmlUrl);
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));//读取网页全部内容
            String temp;
            while ((temp = in.readLine()) != null)
            {
                sb.append(temp);
            }
            in.close();
        }catch (MalformedURLException e) {
            System.out.println("你输入的URL格式有问题!请仔细输入");
        }catch (IOException e) {
            e.printStackTrace();
        }
        return sb.toString();
    }

    /**
     * 从html源码(字符串)中去掉标题
     * @param htmlSource
     * @return
     */
    public String getTitle(String htmlSource){
        List<String> list = new ArrayList<String>();
        String title = "";

        //Pattern pa = Pattern.compile("<title>.*?</title>", Pattern.CANON_EQ);也可以
        Pattern pa = Pattern.compile("<title>.*?</title>");//源码中标题正则表达式
        Matcher ma = pa.matcher(htmlSource);
        while (ma.find())//寻找符合el的字串
        {
            list.add(ma.group());//将符合el的字串加入到list中
        }
        for (int i = 0; i < list.size(); i++)
        {
            title = title + list.get(i);
        }
        return outTag(title);
    }

    /**
     * 去掉html源码中的标签
     * @param s
     * @return
     */
    public String outTag(String s)
    {
        return s.replaceAll("<.*?>", "");
    }

    public static void main(String[] args) {
        String htmlUrl = "http://www.157buy.com";
        new GetHtmlTitle(htmlUrl);

    }
}
时间: 2024-08-29 12:30:35

java 使用正则表达式从网页上提取网站标题的相关文章

Java使用正则表达式取网页中的一段内容(以取Js方法为例)

关于正则表达式: 表1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 表2.常用的限定符 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 表3.常用的反义代码 代码/语法 说明 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S

正则表达式 查找网页源代码 提取指定内容

import requestsimport re txt='<a href="https://www.vgirls.com/13404.html" class="list-title text-md h-2x" target="_blank">想把夏日的阳光寄给冬日的你</a>'urla=re.findall('<a href="(.*?)" class="list-title text

Java提取网站后台数据进行处理并排名

Java提取网站后台数据进行处理并排名 一.网页分析 截取的网站链接为:https://www.tiobe.com/tiobe-index/ 打开网站后,可以看到这个网站的编程语言排名情况.我们选择下图中的图表,这个图表中有2001-2019年的编程语言每个月的使用率,我需要它的数据. 二.数据提取 在网页点右键,点击查看源码:首先我们要编程把源码下载到记事本里,看一下核心代码 1 URL url = new URL(website); 2 // 根据链接(字符串格式),生成一个URL对象 3

Java+Json+JQuery将本地文件显示在网页上

前段时间为是练习JQuery和Java遍历目录,写了一个JavaWeb(使用Jsp+Servlet)的例子.源代码下载:https://github.com/liaoyu/uudisk 上述源码是Myeclipse新建的项目,需要配置一些环境,比如JRE路径,以下是运行截图,界面模仿新浪微盘 工作原理就是通过Java遍历系统(Windows)的目录,前台通过点击图标以ajax方式触发事件,后台以json数据的形式把文件结构返回给前台,前台通过JS解析JSON数据内容,展示不同的图片.目前尚存在的

【总结】java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格

转: [总结]java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格 @Test public void test33() { String phoneString = "哈哈,13888889999"; // 提取数字 // 1 Pattern pattern = Pattern.compile("[^0-9]"); Matcher matcher = pattern.matcher(phoneString); String all = matc

R语言从小木虫网页批量提取考研调剂信息

一.从URL读取并返回html树     1.1 Rcurl包         使用Rcurl包可以方便的向服务器发出请求,捕获URI,get 和 post 表单.比R socktet连接要提供更高水平的交互,并且支持 FTP/FTPS/TFTP,SSL/HTTPS,telnet 和cookies等.本文用到的函数是basicTextGatherer和getURL.想详细了解这个包的可以点击参考资料的链接. R命令: h <- basicTextGatherer( )   # 查看服务器返回的头

Java基础---正则表达式

正则表达式 一.概述 1. 概念:符合一定规则的表达式. 2. 作用:用于专门操作字符串. 3. 特点:用于一些特定的符号来表示一些代码操作,这样可以简化书写.所以学习正则表达式,就是在学习一些特殊符号的使用. 4. 好处:可以简化对字符串的复杂操作. 5. 弊端:符合定义越多,正则越长,阅读性越差. 二.常见符号 说明:X表示字符X或者匹配的规则. 1.字符 x                  字符 x \\                 反斜线字符 \t                 

Java基础——正则表达式

一.什么是正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文本. 许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能强大的正则表达式引擎.正则表达式这个概念最初是由Uinx中的工具软件(例如sed和grep)普及开的.正则表达式通常缩写成"regex",单数有regexp.regex.复数有

Java中正则表达式的使用(常用的方法)

这两天回想了一下正则表达式的使用,顺便就总结了一下java的javascript中使用正则表达式的用法,需要看javascript中使用正则的朋友可以看我的另一篇总结,下面我就简单的介绍一下java中正则表达式的使用.方便自己以后查询使用,也希望能帮助到大家.===欢迎指正=== 在JDK1.3及之前的JDK版本中并没有包含正则表达式的类,如果要在Java中使用正则表达式必须使用第三方提供的正则表达式库.从JDK1.4开始提供了支持正则表达式API,它们位于java.util.regex包中.