У меня есть такая задача. Надо программно зайти на известный сайт, выбрать там некоторые радио-кнопки, т.е. настроить известным образом, и затем нажать на кнопку, и потом скопировать текст, которыц получиться в результате этих манипуляций. Всё! Как это сделать, где копать, помогите пожалуйста.
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".
Вам остается только выдрать из ответа тело и сделать с ним что хотите.
Здравствуйте, gbt, Вы писали:
gbt>Hello, gbt, you wrote:
gbt>Да, подробнее о протоколе HTTP можно почитать gbt>здесь.
gbt>-- gbt> Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Здравствуйте, Игорь , Вы писали:
>Вот программулина, которая лезет на www.ya.ru и показывает скачанное содержимое >HTML-страницы на экране. Ошибки в ней почти не обрабатываются и обрабатываются >криво (не закрывается сокет при ошибке и др.), так как написал сейчас "на >коленке". Я лично с socket API тоже раньше не работал. Использую для работы с >сокетами удобную C++ библиотеку ACE http://www.cs.wustl.edu/~schmidt/ACE.html. С >использованием этой библиотеки програмка сократилась бы раза в 3-4. >Если быдыт еще вопросы — обращайтесь.
Как ни прискорбно, но приходится признать, что у меня не нашлось инклуда (наверное и либы) с getaddrinfo (и остальными причиндалами), SP6 не помог. Не подскажете где это взять?
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.
Hello, gbt, you wrote:
>> Как ни прискорбно, но приходится признать, что у меня не нашлось инклуда >> (наверное и либы) с getaddrinfo (и остальными причиндалами), SP6 не помог. Не >> подскажете где это взять? > Сейчас проверю на MSVC 6.5.
Действительно, на MSVC6 такое не компилилось. Следующее решение уже без сокетов
но делает примерно то же самое и компилится на MSVC 6.
Игорь, не поможете ли еще немного!
ВО-1), надо как-то еще нажать на кнопку, у меня не получается пока что, — примера нет.
и во — 2) тот сайт, на которы я захожу, возвращает данные в уникоде — как бы это отловить и декодировать? Может дополнительные какие-то данные ему посылать?