зайти на сайт и выбрать нужный контрол
От: a178690  
Дата: 28.07.05 02:14
Оценка:
У меня есть такая задача. Надо программно зайти на известный сайт, выбрать там некоторые радио-кнопки, т.е. настроить известным образом, и затем нажать на кнопку, и потом скопировать текст, которыц получиться в результате этих манипуляций. Всё! Как это сделать, где копать, помогите пожалуйста.
Re: зайти на сайт и выбрать нужный контрол
От: gbt Россия  
Дата: 28.07.05 04:08
Оценка: 1 (1)
Hello, a178690, you wrote:

> У меня есть такая задача. Надо программно зайти на известный сайт, выбрать

> там некоторые радио-кнопки, т.е. настроить известным образом, и затем нажать
> на кнопку, и потом скопировать текст, которыц получиться в результате этих
> манипуляций. Всё! Как это сделать, где копать, помогите пожалуйста.

Если вы заранее знаете содержимое страницы, куда собираетесь заходить и
"радио-кнопки и кнопка" на этой странице сгруппированы в HTML-форму, например
такую:
<HTML>
<BODY>
<FORM ACTION="http://server.com/path" METHOD="post"><DIV>
<SELECT NAME="flavor">
    <OPTION VALUE="van" SELECTED>Vanilla
    <OPTION VALUE="str">Strawberry
    <OPTION VALUE="rr">Rum and Raisin
    <OPTION VALUE="po">Peach and Orange
    </SELECT>
<BR>
<INPUT TYPE="submit" VALUE="Make it so!">
</DIV></FORM>
</BODY>
</HTML>


То все просто. Подключаемся с помощью сокета к HTTP серверу server.com, шлем ему
HTTP запрос: "POST http://server.com/path HTTP/1.1\r\n\r\nflavor=str", где вы
перечисляете состояние радиобуттонов после "\r\n\r\n". Получаем от него HTTP ответ вида:
"HTTP/1.1 200 OK\r\nТут куча хеадеров, которые нам не нужны\r\n\r\nТело ответа в
виде HTML".

Вам остается только выдрать из ответа тело и сделать с ним что хотите.

--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9
Re[2]: зайти на сайт и выбрать нужный контрол
От: gbt Россия  
Дата: 28.07.05 04:26
Оценка:
Hello, gbt, you wrote:

Да, подробнее о протоколе HTTP можно почитать
здесь.

--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9
Re[3]: зайти на сайт и выбрать нужный контрол
От: a178690  
Дата: 29.07.05 04:45
Оценка:
Здравствуйте, gbt, Вы писали:

gbt>Hello, gbt, you wrote:


gbt>Да, подробнее о протоколе HTTP можно почитать

gbt>здесь.

gbt>--

gbt> Igor Polyakov — igorpol_gbt (at) mail (dot) ru

Спасибо, Игорь. Буду думать и работать.
Re[4]: зайти на сайт и выбрать нужный контрол
От: a178690  
Дата: 03.08.05 08:49
Оценка:
Здравствуйте, Игорь , Вы писали:

>Вот программулина, которая лезет на www.ya.ru и показывает скачанное содержимое

>HTML-страницы на экране. Ошибки в ней почти не обрабатываются и обрабатываются
>криво (не закрывается сокет при ошибке и др.), так как написал сейчас "на
>коленке". Я лично с socket API тоже раньше не работал. Использую для работы с
>сокетами удобную C++ библиотеку ACE http://www.cs.wustl.edu/~schmidt/ACE.html. С
>использованием этой библиотеки програмка сократилась бы раза в 3-4.
>Если быдыт еще вопросы — обращайтесь.

Как ни прискорбно, но приходится признать, что у меня не нашлось инклуда (наверное и либы) с getaddrinfo (и остальными причиндалами), SP6 не помог. Не подскажете где это взять?
Re[5]: зайти на сайт и выбрать нужный контрол
От: gbt Россия  
Дата: 03.08.05 12:05
Оценка:
Hello, a178690, you wrote:

>>Вот программулина, которая лезет на www.ya.ru и показывает скачанное содержимое

>>HTML-страницы на экране. Ошибки в ней почти не обрабатываются и обрабатываются
>>криво (не закрывается сокет при ошибке и др.), так как написал сейчас "на
>>коленке". Я лично с socket API тоже раньше не работал. Использую для работы с
>>сокетами удобную C++ библиотеку ACE
>>http://www.cs.wustl.edu/~schmidt/ACE.html. С
>>использованием этой библиотеки програмка сократилась бы раза в 3-4.
>>Если быдыт еще вопросы — обращайтесь.

> Как ни прискорбно, но приходится признать, что у меня не нашлось инклуда

> (наверное и либы) с getaddrinfo (и остальными причиндалами), SP6 не помог. Не
> подскажете где это взять?

Я компилил на MSVC 7.1, куда входит соответствующий PlatformSDK 4.0.352.
Сейчас проверю на MSVC 6.5.

--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9
Re[6]: зайти на сайт и выбрать нужный контрол
От: gbt Россия  
Дата: 03.08.05 12:54
Оценка:
Hello, gbt, you wrote:

>> Как ни прискорбно, но приходится признать, что у меня не нашлось инклуда

>> (наверное и либы) с getaddrinfo (и остальными причиндалами), SP6 не помог. Не
>> подскажете где это взять?
> Сейчас проверю на MSVC 6.5.

Действительно, на MSVC6 такое не компилилось. Следующее решение уже без сокетов
но делает примерно то же самое и компилится на MSVC 6.

#include <iostream>

#include <windows.h>
#include <wininet.h>

#pragma comment(lib, "wininet.lib")

int main()
{
        HINTERNET hInternet = InternetOpen("Microsoft Internet Explorer", INTERNET_OPEN_TYPE_DIRECT,
                                           NULL, NULL, 0);
        if (hInternet)
        {
                HINTERNET hConnection = InternetConnect(hInternet, "www.ya.ru", INTERNET_DEFAULT_HTTP_PORT,
                                                        NULL, NULL, INTERNET_SERVICE_HTTP, 0, NULL);

                if (hConnection)
                {
                        HINTERNET hRequest = HttpOpenRequest(hConnection, NULL, "/", NULL, NULL, NULL, 0, NULL);
                        if (hRequest)
                        {
                                if (HttpSendRequest(hRequest, NULL, 0, NULL, 0))
                                {
                                        char Buffer[256 * 1024];
                                        DWORD dwRead;
                                        if (InternetReadFile(hRequest, Buffer, sizeof(Buffer) - 1, &dwRead))
                                        {
                                                Buffer[dwRead] = '\0';
                                                std::cout << Buffer;
                                        }
                                }
                                InternetCloseHandle(hRequest);
                        }
                        InternetCloseHandle(hConnection);
                }
                InternetCloseHandle(hInternet);
        }
        return 0;
}


--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9
Re[7]: зайти на сайт и выбрать нужный контрол
От: a178690  
Дата: 04.08.05 09:01
Оценка:
Здравствуйте, gbt, Вы писали:


gbt>--

gbt> Igor Polyakov — igorpol_gbt (at) mail (dot) ru

Спасибо большое, Игорь, работает. Всего Вам доброго!
Re[8]: зайти на сайт и выбрать нужный контрол
От: a178690  
Дата: 10.08.05 04:55
Оценка:
Игорь, не поможете ли еще немного!
ВО-1), надо как-то еще нажать на кнопку, у меня не получается пока что, — примера нет.
и во — 2) тот сайт, на которы я захожу, возвращает данные в уникоде — как бы это отловить и декодировать? Может дополнительные какие-то данные ему посылать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.