java使用htmlparser抓取网页信息,中文字符显示为“??”,如何解决?
使用云语言平台的api,解析“这是什么东西?”这句话,如果使用网页打开,会得到:这是什么东西?网页的编码为utf-8。但是使用javahtmlparser抓取网页内容就会...
使用云语言平台的api,解析“这是什么东西?”这句话,如果使用网页打开,会得到:
这 是 什么 东西 ?
网页的编码为utf-8。
但是使用java htmlparser抓取网页内容就会出现乱码。
代码如下:
String URL="http://ltpapi.voicecloud.cn/analysis/?api_key=mykey&text="+cSentence+"&pattern=ws&format=plain"
Parser yunyuyan = new Parser();
yunyuyan.setEncoding("UTF-8");
yunyuyan.setURL(URL);
for (NodeIterator i = yunyuyan.elements (); i.hasMoreNodes(); )
{
Node node = i.nextNode();
System.out.println(node.getText());
System.out.println(node.toPlainTextString());
System.out.println(node.toHtml());
System.out.println(node.toString());
}
控制台显示为:
??? ?? ?? ?? ?? ?? ?? ??
??? ?? ?? ?? ?? ?? ?? ??
??? ?? ?? ?? ?? ?? ?? ??
Txt (0[0,0],24[0,24]): ??? ?? ?? ?? ?? ?? ?? ?? 展开
这 是 什么 东西 ?
网页的编码为utf-8。
但是使用java htmlparser抓取网页内容就会出现乱码。
代码如下:
String URL="http://ltpapi.voicecloud.cn/analysis/?api_key=mykey&text="+cSentence+"&pattern=ws&format=plain"
Parser yunyuyan = new Parser();
yunyuyan.setEncoding("UTF-8");
yunyuyan.setURL(URL);
for (NodeIterator i = yunyuyan.elements (); i.hasMoreNodes(); )
{
Node node = i.nextNode();
System.out.println(node.getText());
System.out.println(node.toPlainTextString());
System.out.println(node.toHtml());
System.out.println(node.toString());
}
控制台显示为:
??? ?? ?? ?? ?? ?? ?? ??
??? ?? ?? ?? ?? ?? ?? ??
??? ?? ?? ?? ?? ?? ?? ??
Txt (0[0,0],24[0,24]): ??? ?? ?? ?? ?? ?? ?? ?? 展开
2个回答
展开全部
建议采用jsoup来抓取和解析文件。
jsoup支持css选择器。
下面是一个简单的例子:
Document doc = Jsoup.parse(in/*文件流*/, charset/*字符集*/, service/*相对地址*/);
Element e = doc.select("div[id=myid]").get(0);// 用选择器选择元素
List<Node> childs = new LinkedList<Node>(e.childNodes());
for (Iterator<Node> iter = childs .iterator(); iter.hasNext();) {
iter.next().remove();// 移除找到元素的所有子元素
}
e.appendText("sometext"); // 追加新内容
String content = doc.html(); // 生成结果
追问
需要下载.jar包是吗?在哪里能下?
追答
百度搜索下jsoup,可能还有比我的例子更详细的例子。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询