2

Webページをダウンロードしていて、そこからいくつかの値を抽出しようとしています。

私が興味を持っているページの場所はこのタイプです:

<a data-track=\"something\" href=\"someurl\" title=\"Heaven\"><img src=\"somesource.jpg\" /></a>

そして、href(someurl)値を抽出する必要があります。私が持っているHTML文字列には上記のような複数のエントリがあることに注意してください。したがって、リストを使用して、文字列から抽出したすべてのURLを格納します。

これは私がこれまでに試したことです:

QString html_str=myfile();
QRegExp regex("<a data-track\\=\"something\" href\\=\".*(?=\" title)");
if(regex.indexIn(html_str) != -1){
    QStringList list;
    QString str;
    list = regex.capturedTexts();
    foreach(str,list)
        qDebug() << str.remove("<a data-track=\"something\" href=\"");
}

上記のコードでは、ファイルの最初の出現からファイルの終わりまでのlist.count() == 1HTML文字列全体を含む1つの出現()のみを取得しますが、その中には含まれていません。これらはすべて削除されています。someurl<a data-track="something" href=""

4

2 に答える 2

0

私は次のようにします:(正規表現を再確認してください)

QRegExp regex("<a data-track=\"something\" href=\".*(?=\" title)");

if (regex.indexIn(html_str) != -1) qDebug() << html_str.cap().remove(<a data-track=\"something\" href=\");
于 2014-02-16T15:05:25.853 に答える
0

while ループを使用して、「html_str」の位置を制御できます。

pos = regex.indexIn(htmlContent);    // get the first position
while(pos = regex.indexIn(htmlContent, pos) != -1){    // continue next
    QStringList list;
    list = regex.capturedTexts();
    foreach(QString url, list) {
        // do something
    }
    pos += regex.matchedLength();
}
于 2014-02-21T05:23:21.353 に答える