【问题标题】:Using QWebkit to retrieve divs with a specific class使用 QWebkit 检索具有特定类的 div
【发布时间】:2013-12-19 19:35:22
【问题描述】:

我在下面发布了问题,尝试使用 QDomDocument 类。有人建议我改用 QWebkit,但我很困惑如何用 QWebkit 做我需要做的事情。我以前从未使用过它,所以我不太确定。有人可以提供任何建议吗?谢谢! 作为记录,该函数使用的是一个 QByteArray,当它被翻译成文本时是一个标准的 HTML 文件。


原始问题:

我在一个 HTML 文件中有几个具有不同类的 div,如下所示:

<div class='A'>...</div>
<div class='B'>...</div>
<div class='C'>...</div>

我有一个 Qt (4.7) 程序,我需要能够根据类从中获取某个 div。我需要在这个程序中使用 QDomDocument。我从文档中知道该类有一个函数elementById(),但我不能让它与类一起工作,只是 ids。这不是一个制作的 HTML 文件或任何东西,所以我无法控制它是类还是 id。有没有办法做到这一点,我错过了?谢谢!

【问题讨论】:

    标签: html qt qt4.7 qwebkit


    【解决方案1】:

    .pro

    QT += webkitwidgets
    

    ma​​in.cpp

    #include <QApplication>
    #include <QDebug>
    #include <QWebView>
    #include <QWebFrame>
    #include <QWebElement>
    
    int main( int argc, char *argv[] ) {
        QApplication a(argc, argv);
    
        QString l_html( "<html><body>"
                        "<div class='A'>div with class A</div>"
                        "<div class='B'>div with class B</div>"
                        "<div class='C'>div with class C</div>"
                        "<span class='A'>span with class A</span>"
                        "</body></html>" );
    
        QWebView l_webView; // you can skip the QWebView if you dont want to show any widget
        l_webView.page()->mainFrame()->setHtml( l_html );
        QWebElement l_root( l_webView.page()->mainFrame()->documentElement() );
        QWebElementCollection l_elements( l_root.findAll( ".a" ) );
    
        foreach ( QWebElement l_e, l_elements ) {
            // do what you want here
        }
    
        return a.exec();
    }
    

    【讨论】:

    • 谢谢,我试过了,但 QWebElementCollection l_elements 什么也没返回
    • @thnkwthprtls 我提供的代码是有效的,只需在 foreach 中添加一个qDebug() &lt;&lt; l_e.toOuterXml();,您就会看到。关于“其他参数”,您可以放置​​任何您想要的 CSS 选择器。
    • 哦,好吧,那是我做错的部分,我误解了findAll参数的含义,现在看起来它可以工作了。谢谢!
    猜你喜欢
    • 2020-02-24
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2023-03-12
    • 2012-10-20
    • 1970-01-01
    • 2018-04-08
    相关资源
    最近更新 更多