在Qt中解析HTML的最佳方法?

时间:2010-02-01 19:35:06

标签: c++ html qt

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

2 个答案:

答案 0 :(得分:19)

我会使用内置的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
  }
}

使用班级

MyPageLoader loader;
loader.loadPage("http://www.example.com")

然后用收藏品做任何你喜欢的事。

答案 1 :(得分:7)


这个问题已经很老了。不过我希望这会对某人有所帮助:

我为Qt编写了两个小类,我在sourceforge下发表了这个小类。这将帮助您访问与XML一起使用的html文件。

在这里你会找到项目:
   http://sourceforge.net/projects/sgml-for-qt/
在这里,您可以在维基中找到帮助系统。

Drewle