0

我需要编写 Qt/C++ 代码来提取所有 p 标签以将每个 p 标签写入 .txt 文件,例如,如果我有以下 HTML 页面:

        <!DOCTYPE html>
        <html>
         <body>

         <h1>My First Heading</h1>

         <p>My first paragraph.</p>
         <p>My second paragraph.</p>

         </body>
          </html>

我需要创建 2 个 .txt 文件的代码,第一个文件将包括我的第一段。第二个将包括我的第二段。

我的问题是如何解析 html 并获取标签之间的 txt,这里是我的代码

         int main(int argc, char *argv[])
          {
            QCoreApplication a(argc, argv);

           QEventLoop loop;

            QNetworkRequest request;
             request.setUrl(QUrl("http://en.wikipedia.org/wiki/Cars"));
               QNetworkAccessManager* networkMgr = new QNetworkAccessManager();
                QNetworkReply* reply = networkMgr->get(request);

             QObject::connect(reply, SIGNAL(finished()),&loop,SLOT(quit()));

                        loop.exec();

                 QFile file ("/Users/David/Desktop/text123.txt");
                   file.open(QIODevice::WriteOnly);
                   file.write(reply->readAll());

                         delete reply;

                   return a.exec();
                     }

非常感谢你的帮助

  1. 项目清单
4

1 回答 1

1

您可以为此使用 QRegularExpression,请参见下面的示例。

QString txt = reply->readAll();
QRegularExpression regex("< *[pP] *>(.*)< *\\/ *[pP] *>");
QRegularExpressionMatchIterator it = regex.globalMatch(txt);
int i = 0;
while(it.hasNext())
{
    QRegularExpressionMatch match = it.next();
    QString filename = QString("e:/folder/file%1.txt").arg(i);
    QFile file (filename);
    file.open(QIODevice::WriteOnly);
    file.write(match.captured(1).toUtf8());
    file.close();
    ++i;
}
于 2013-07-14T06:07:31.490 回答