如何解析在Qt中充满BAD html的页面上的所有“a”html标签“href”属性?
答案 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