当前位置: 代码迷 >> Java Web开发 >> :java获得html网页编码字段的正则表达式
  详细解决方案

:java获得html网页编码字段的正则表达式

热度:5465   发布时间:2013-02-25 21:20:09.0
求助: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));        }
  相关解决方案