我试图从Qt中的网页中获取一些数据。由于QWebKit未维护,我想使用QXmlStreamReader,但它得到了一些网页的错误信息。
例如:XML Parse Error "Opening and ending tag mismatch." at http://www.google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.de/?gfe_rd=cr&ei=toP_WMrVKoHKXuvxnsAO">here</A>.
</BODY></HTML>我得到了HTML,HEAD,meta和TITLE。
有效html页面上的其他错误消息:
这是我的密码:
webpage = new QXmlStreamReader(data);
//emit got_webpage(&QString(data));
QStringList test;
while (!webpage->atEnd() && !webpage->hasError())
{
QXmlStreamReader::TokenType token = webpage->readNext();
if (token == QXmlStreamReader::StartDocument)
continue;
if (token == QXmlStreamReader::StartElement)
{
test << webpage->name().toString();
/*if (webpage->name() == "H1")
{
emit got_webpage(webpage)
}*/
}
}
emit got_webpage(&test.join("\n"));
if (webpage->hasError())
{
// TODO: Error handling...
qDebug() << "XML Parse Error " << webpage->errorString();
}
webpage->clear();
delete webpage;发布于 2017-04-25 19:53:39
顾名思义,QXmlStreamReader是用来解析XML的。HTML不是基于XML的,因此不能用QXmlStreamReader进行解析。
也就是说,如果您可以将HTML转换为XHTML,您将能够使用QXmlStreamReader解析它。然而,Qt没有执行此转换的内置方法。可以使用第三方库(如提迪利布 )将任意的HTML转换为XHTML。
https://stackoverflow.com/questions/43617117
复制相似问题