【问题标题】:how to write all the <p> tags to text file如何将所有 <p> 标签写入文本文件
【发布时间】:2013-07-13 17:28:38
【问题描述】:

我需要编写 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. 列表项

【问题讨论】:

    标签: c++ qt qt-creator


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2015-08-26
      • 2018-11-21
      • 2021-12-09
      • 1970-01-01
      相关资源
      最近更新 更多