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

y2k*_*y2k 17 html c++ qt

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

Jar*_*aro 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
  }
}
Run Code Online (Sandbox Code Playgroud)

要使用该课程

MyPageLoader loader;
loader.loadPage("http://www.example.com")
Run Code Online (Sandbox Code Playgroud)

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


小智 7


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

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

在这里你可以找到这个项目:
http://sourceforge.net/projects/sgml-for-qt/
在这里你可以找到wiki中的帮助系统.

Drewle