日期:2014-05-17  浏览次数:20667 次

求助:java获得html网页编码字段的正则表达式
各位好:
  我现在写一个java网络爬虫,在下载网页的时候遇到了问题。
  我在抓取网页的时候,以UTF8格式读取网页内容(网页所有内容,未剔除html标签)并写入到本地文件,作为后期索引的源数据。
  由于各网站的编码格式不统一,甚至一个网站的不同页面也有编码不统一的情况,因此我下载的网页中有很多网页都是乱码。

问题:我现在想在已获得的网页数据中提取网页编码字段,就是这行:<meta http-equiv="Content-Type" content="text/html; charset=gbk" />,但是不会写正则表达式,求指点...

ps:1.如果有其他方法可以获得网页编码,也请回贴告知...
  2.我在使用多线程的时候也有点问题,就是有时候线程开的多了反而会影响下载速度(我对每个站点一个开主线程,每个主线程下再开多个线程同时下载此站点的网页),如何合理的分配线程?
  3.抓取iteye网页的时候被封ip,如何避免这种情况?

急求高手指点,谢谢!

------解决方案--------------------
Java code
String content="<html xmlns=\"http://www.w3.org/1999/xhtml\">\n" +
                "<head>\n" +
                "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n" +
                "<meta content=\"求助 java获 html网页编码字段 正则表达式 Java Web 开发\" name=\"Keywords\"/>...\n";
        Pattern pattern=Pattern.compile("<meta\\s+http-equiv=\"Content-Type\"\\s+content=\"[\\s\\S]*?charset=(\\S+?)\"/>");
        Matcher matcher=pattern.matcher(content);
        if(matcher.find()){
            System.out.println(matcher.group(1));
        }