Подтвердить что ты не робот

Лучший способ разбора HTML в Qt?

Как я могу проанализировать все "h" теги html-тегов на странице, полной BAD html, в Qt?

4b9b3361

Ответ 1

Я бы использовал встроенный 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")

а затем сделайте все, что захотите, с коллекцией.

Ответ 2


этот вопрос уже довольно стар. Тем не менее я надеюсь, что это поможет кому-то:

Я написал два небольших класса для Qt, которые я опубликовал в sourceforge. Это поможет вам получить доступ к html файлу, сопоставимому с XML.

Здесь вы найдете проект:
 http://sourceforge.net/projects/sgml-for-qt/
Здесь вы найдете справочную систему в вики.

Drewle