crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Загрузка исходника html страницы
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
k0p4 Дата 19.9.2010, 10:41
  Решил свою проблему. Код лежит http://paste.org/pastebin/view/22552, если кому-то интересно.
k0p4 Дата 18.9.2010, 21:01
  А как скачать большой файл? К примеру
void MainWindow::slotFinished()
{   
 //   file.close();
    QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
    file.setFileName("lost.avi");
    file.open(QIODevice::WriteOnly);
    QDataStream stream( &file );

    stream << reply->readAll();
 
    file.close();
    reply->deleteLater();
}

выдаёт критическую ошибку.
RazrFalcon Дата 27.8.2010, 13:22
 
Цитата(kwisp @ 27.8.2010, 11:58) *
wget -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.437.3 Safari/534.1" http://www.kinopoisk.ru/level/1/film/397220/

Похожее находил, тока пример тот не работал. А это пашит, я в шоке! :o:
Я конечно еще не такой МОЗГ как остальные тут, ну надеюсь разберусь потихоньку.
По крайней мере половина слов мне еще не знакома :lol: (ethereal снифер wireshark парсить и тд.)
Как говорится: вики в помощь, сейчас поучимся уму разуму.

ufna, я еще разбираюсь с QNetwortAccessManager...
kwisp Дата 27.8.2010, 11:58
  другое дело.:)

и так тоже работает
Цитата
wget -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.437.3 Safari/534.1" http://www.kinopoisk.ru/level/1/film/397220/


потом можно так
Цитата
grep "repeat-x; font-weight: normal \!important; text-decoration: none" ./index.html | sed 's/.* none">/ /g' | sed 's/<span.*/ /g'

можно конечно пооптимальнее обработать но 8,202 я получил с твоей странички
ufna Дата 27.8.2010, 11:55
  В примере выше моем делаем в конструкторе:

request.setUrl(QUrl("http://www.kinopoisk.ru/level/1/film/397220/"));
request.setRawHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.437.3 Safari/534.1");

QNetworkReply *reply = pNetManager->get(request);

/* далее по тексту */


На выходе - то что нужно. Только в qDebug() все данные пихать не надо, т.к. размер большой - ничего не выведет. По кускам - все отлично.

Практически одновременно с BRE отписались :)
BRE Дата 27.8.2010, 11:54
  Нужно "прикинутся" и все он будет отдавать. :)
    QNetworkRequest req;
    req.setUrl( QUrl( "http://www.kinopoisk.ru/level/1/film/397220/" ) );
    req.setRawHeader( "User-Agent:", "Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.1b4) Gecko/20090427 Fedora/3.5-0.20.beta4.fc11 Firefox/3.5b4" );

kwisp Дата 27.8.2010, 11:49
  ну проверь.
о результатах доложить:)
ufna Дата 27.8.2010, 11:42
  Извини за резкость, но задача в ассистанте разобрана на кучу раз.

Минимальный пример:

a_teststate.h
//-----------------------------------------------------------------------------
// File: a_teststate.h
//
// Desc: 
//-----------------------------------------------------------------------------

#ifndef A_TESTSTATE_H
#define A_TESTSTATE_H

#include <QObject>

#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>

//--------------------------------------------------------------------------------------
// Name: cTestState
// Desc: 
//--------------------------------------------------------------------------------------
class cTestState :
        public QObject
{
    Q_OBJECT

public:
    // Constructor & destructor
    //----------------------------------------------------------------------------------
    cTestState(QObject *parent = 0);
    ~cTestState();

    QNetworkAccessManager* networkManager() { return pNetManager; }

private:
    // 
    //----------------------------------------------------------------------------------
    QNetworkAccessManager *pNetManager;

public slots:
    // control
    //----------------------------------------------------------------------------------
    void slotReadyRead();
    void slotError(QNetworkReply::NetworkError);
    void slotFinished();

};

#endif



a_teststate.cpp
//-----------------------------------------------------------------------------
// File: a_teststate.cpp
//
// Desc:
//-----------------------------------------------------------------------------

#include "a_teststate.h"

#include <QDebug>

//--------------------------------------------------------------------------------------
// cTestState class constructor
//--------------------------------------------------------------------------------------
cTestState::cTestState(QObject *parent)
    : QObject(parent)
{       
    pNetManager = new QNetworkAccessManager(this);

    QNetworkRequest request;
    request.setUrl(QUrl("http://ufna.ru/"));

    QNetworkReply *reply = pNetManager->get(request);
    connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
    connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
                this, SLOT(slotError(QNetworkReply::NetworkError)));
    connect(reply, SIGNAL(finished()), this, SLOT(slotFinished()));
}

//--------------------------------------------------------------------------------------
cTestState::~cTestState() {}

//=============================================================================
// PUBLIC SLOTS
//=============================================================================

//--------------------------------------------------------------------------------------
void cTestState::slotReadyRead()
{
    qDebug() << "cTestState::slotReadyRead()";
}

//--------------------------------------------------------------------------------------
void cTestState::slotError(QNetworkReply::NetworkError error)
{
    qDebug() << "cTestState::slotError("
            << error << ")";
}

//--------------------------------------------------------------------------------------
void cTestState::slotFinished()
{
    qDebug() << "cTestState::slotFinished()";

    QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
    reply->deleteLater();

    // Вывод загруженной страницы
    QByteArray data = reply->readAll();
    QString str = QString::fromUtf8(data);
    qDebug() << str;
}





а, счас проверим

Цитата(kwisp @ 27.8.2010, 12:35) *
ufna,
тебе же говорят - сервер не дает страничку если ты не браузер. я сейчас только что проверил. надо под браузер шифроваться для этого надо знать значени полей http запроса отправляемого браузером. я их наизусть не помню - поставлю wireshark посмотрю. )


счас проверим. В принципе, там проверка либо по яве, либо по тому что шлется в юзер-агент.
kwisp Дата 27.8.2010, 11:35
  ufna,
тебе же говорят - сервер не дает страничку если ты не браузер. я сейчас только что проверил. надо под браузер шифроваться для этого надо знать значени полей http запроса отправляемого браузером. я их наизусть не помню - поставлю wireshark посмотрю. )
ufna Дата 27.8.2010, 11:20
  Не, ну реально, посмотреть любой пример с QNetwortAccessManager, QNetworkReply() и get() религия не позволяет? О_о
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.7.2025, 23:10