Как я могу получить содержание веб-страницы

Можно использовать короткие имена переменных

Но не для индексов во вложенных циклах.

11
задан genesis 11 October 2011 в 22:23
поделиться

3 ответа

Вы смотрели QNetworkAccessManager ? Вот примерный и готовый пример, иллюстрирующий использование:

class MyClass : public QObject
{
Q_OBJECT

public:
    MyClass();
    void fetch(); 

public slots:
    void replyFinished(QNetworkReply*);

private:
    QNetworkAccessManager* m_manager;
};


MyClass::MyClass()
{
    m_manager = new QNetworkAccessManager(this);

    connect(m_manager, SIGNAL(finished(QNetworkReply*)),
         this, SLOT(replyFinished(QNetworkReply*)));

}

void MyClass::fetch()
{
    m_manager->get(QNetworkRequest(QUrl("http://stackoverflow.com")));
}

void MyClass::replyFinished(QNetworkReply* pReply)
{

    QByteArray data=pReply->readAll();
    QString str(data);

    //process str any way you like!

}

В вашем обработчике для сигнала finished вам будет передан объект QNetworkReply , ответ из которого вы можете прочитать как наследуется от QIODevice . Простой способ сделать это - просто вызвать readAll , чтобы получить QByteArray . Вы можете построить QString из этого QByteArray и делать с ним все, что захотите.

25
ответ дан 3 December 2019 в 03:19
поделиться

Вы изучали lynx, curl или wget? Раньше мне приходилось получать и анализировать информацию с веб-сайта без доступа к базе данных, и если вы пытаетесь получить динамически отформатированные данные, я считаю, что это был бы самый быстрый способ. Я не специалист по C, но я предполагаю, что есть способ запускать сценарии оболочки и получать данные или, по крайней мере, запускать сценарий и получать вывод из файла после записи в него. В худшем случае вы можете запустить cron и проверить наличие «готовой» строки в конце записанного файла с помощью C, но я сомневаюсь, что это будет необходимо. Я полагаю, это зависит от того, для чего он вам нужен, но если вам просто нужен выходной html страницы, что-то вроде wget, переданного по конвейеру awk или grep, может творить чудеса.

1
ответ дан 3 December 2019 в 03:19
поделиться

Ответ Пола Диксона, вероятно, лучший подход, но ответ Джесси действительно затрагивает кое-что, о чем стоит упомянуть.

cURL - или, точнее, libcURL - удивительно мощная библиотека. Нет необходимости в выполнении сценариев оболочки и синтаксического анализа вывода, libCURL доступен для C, C ++ и других языков, чем вы можете встряхнуть URL-адрес. Это может быть полезно, если вы выполняете какую-то странную операцию (например, http POST через ssl?), Которую qt не поддерживает.

2
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: