如何在Qt中解析完整的BAD html页面上的所有“a” html标签“href”属性?

最佳答案

我会使用内置的QtWebKit。不知道它的性能如何,但我认为它应该可以捕获所有“不良” HTML。
就像是:

class MyPageLoader : public QObject
{
  Q_OBJECT

public:
  MyPageLoader();
  void loadPage(const QUrl&);

public slots:
  void replyFinished(bool);

private:
  QWebView* m_view;
};

MyPageLoader::MyPageLoader()
{
  m_view = new QWebView();

  connect(m_view, SIGNAL(loadFinished(bool)),
          this, SLOT(replyFinished(bool)));
}

void MyPageLoader::loadPage(const QUrl& url)
{
  m_view->load(url);
}

void MyPageLoader::replyFinished(bool ok)
{
  QWebElementCollection elements = m_view->page()->mainFrame()->findAllElements("a");

  foreach (QWebElement e, elements) {
    // Process element e
  }
}

使用类(class)
MyPageLoader loader;
loader.loadPage("http://www.example.com")

然后随心所欲地处理收藏集。

10-05 20:42