| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Берем данные с интернет-страницы. |
| Автор: Vladimir_K 17.12.2007, 17:02 | ||
| Привет всем! Придумал я себе новую головную боль! Задача такая: подключиться к инету, взять данные со страницы и вывести в окно программы. Indy я скачал, просмотрел, скажу прямо - темный лес... Давненько я делфи не занимался - многое уже подзабылось. Использую такой код:
Бывает, что страница скачивается, но как-то не полностью - на странице в инете какие-то слова есть, а у меня в окне проги их нет... Правильный ли я код использую? Есть ли особенности при подобном скачивании текста с html, или php страницы? Ой, вопросов много... помогите, кто чем может! |
| Автор: MetalFan 17.12.2007, 18:17 | ||
сынок, это - фантастика |
| Автор: Vladimir_K 17.12.2007, 18:46 |
| Ну да! Нет и все! Серьезно! Начало страницы есть, конец - тоже, в середине куча текста... Но не весь! |
| Автор: MetalFan 17.12.2007, 19:15 |
| значит там скрипт или фрейм или еще какая-то хитрость |
| Автор: Vladimir_K 17.12.2007, 20:58 |
| А может есть способ просто найти на странице нужную инфу (цифры, слова) без загрузки кода страницы в эту переменную "s"? Просматриваю HTML-код страницы в браузере - все нормально. При пересылке в мою прогу что-то теряется... |
| Автор: MetalFan 17.12.2007, 22:55 |
ну так ты определись, что теряется то. мы то тут при чем? вот когда определишься, то либо TWebBrowser заюзаешь, либо поймешь, что там откуда на странице берется |
| Автор: Vladimir_K 17.12.2007, 23:23 |
| Извините, я никому не хотел надоедать... так получилось Я понял причину. Я пытаюсь зайти на одну из страниц сайта, на которую доступ есть только по паролю. В браузере IE вхожу на эту страницу без проблем - используется автовход (наверное мой логин и пароль сохранены в куках на моем компе), а из проги войти туда не могу - предлагается ввести пароль... То есть ничего не "теряется" - дурья моя башка, а просто не передается то, чего нет. Вот так. Есть ли выход из данной ситуации? |
| Автор: MetalFan 17.12.2007, 23:34 |
есть. сначало залогиниться |
| Автор: Vladimir_K 18.12.2007, 00:10 |
| Так я залогинен. Из IE вхожу без проблем. Из проги - нет... При входе на страницу при помощи браузера я логин и пароль не ввожу. Проблема научить прогу использовать для входа логин и пароль, которые есть у браузера. |
| Автор: elementos 18.12.2007, 13:40 | ||||
| вставлю свои пять копеек логично, что нужно залогинится в программе. исследовать сначала html страницу с формой, куда передается логин и пасс, найти там название этих полей, затем передать логин и пасс через idhttp компоненту, а после уже обрабатывать сам полученный html. пример:
Web - TWebbrowser Http - TIdhttp процедура выглядит так:
не забудьте кукиманагер на форму положить, и привязать его к idhttp |
| Автор: Gess 18.12.2007, 17:40 |
| Хотелось бы решить следующую "проблему" При работе со страницей WebBrowser1.Navigate('https://www.np-ats.ru/reports.jsp?part=1') возникает следующее сообщение такое же "безобразие" и при попытке получить файл с сайта перерыл инет, ни настройки браузера, ни отключение всего в "Центре безопасности" проблему не решают. Как избавиться от этих назойливых сообщений? |
| Автор: MetalFan 18.12.2007, 17:43 |
| Gess, создай отдельную тему |
| Автор: Vladimir_K 18.12.2007, 20:19 | ||
| Расположил на форме IdHTTP и IdCookieManager. IdHTTP привязал к IdCookieManager. Вот то, что у меня в uses: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdHttp, StdCtrls, ComCtrls, ActiveX, MsHtml, IdBaseComponent, IdCookieManager, IdComponent, IdTCPConnection, IdTCPClient; Нужно ли еще что-нибудь указывать? Моя программулина:
Выдает ошибки: [Error] PExp_U.pas(31): Undeclared identifier: 'TWebBrowser' [Error] PExp_U.pas(36): Missing operator or semicolon [Error] PExp_U.pas(37): 'DO' expected but identifier 'ReadyState' found [Error] PExp_U.pas(39): ')' expected but identifier 'Document' found [Error] PExp_U.pas(47): ')' expected but identifier 'Document' found [Error] PExp_U.pas(47): Operator not applicable to this operand type [Error] PExp_U.pas(50): EXCEPT or FINALLY expected [Error] PExp_U.pas(51): 'END' expected but 'FINALLY' found [Error] PExp_U.pas(54): '.' expected but ';' found [Warning] PExp_U.pas(55): Text after final 'END.' - ignored by compiler [Error] PExp_U.pas(17): Unsatisfied forward or external declaration: 'TForm1.Button1Click' [Fatal Error] PExp.dpr(5): Could not compile used unit PExp_U.pas' |
| Автор: aktuba 18.12.2007, 21:48 | ||
А зачем тебе тут WebBrowser???
|
| Автор: Vladimir_K 18.12.2007, 22:05 | ||
Интересный вопрос. Так посоветовали... Сейчас буду пробовать твой код. |
| Автор: aktuba 18.12.2007, 22:33 | ||
Покажи свой код... |
| Автор: Vladimir_K 18.12.2007, 22:52 | ||
| Ошибки исправил - обычная невнимательность... Но вот этот код не работает.
Добавлено через 7 минут и 24 секунды Слова login и pass - это должны быть те слова, которые там на странице, или нет? Если на странице: User name: и Password: - эти слова вводить в код программы? |
| Автор: aktuba 18.12.2007, 23:31 | ||
Нет. Названия полей надо. |
| Автор: Vladimir_K 18.12.2007, 23:45 |
| Вот кусок кода страницы для ввода логина-пароля: <td><b>User name:</b></td> <td><input type=text name=username></td> </tr> <tr> <td><b>Password:</b></td> <td><input type=password name=password></td> Какие слова вводить в прогу? |
| Автор: aktuba 19.12.2007, 00:34 |
| username и password |
| Автор: Vladimir_K 19.12.2007, 08:18 |
| Возникает ошибка во время выполнения проги, когда жму кнопку Button1. Access violation at address 00474CB2 in module 'PExp.exe'. Read of address 00000008. вот в этой строке: IdHTTP.Post('http://www.url.net/pages/qw.php?pid=1', lData); В проге я везде ввел адрес страницы, куда мне конкретно нужно зайти. |
| Автор: elementos 19.12.2007, 10:35 | ||
и где там форма входа? |
| Автор: Vladimir_K 19.12.2007, 13:12 |
| Ха, а ведь действительно такая страница есть: http://www.url.net/pages/qw.php?pid=1 Я же просто вместо адреса вставил "url" Вот точный: http://www.payingcash.net/pages/ptpstats.php?pid=1 Если это так уж необходимо. Добавлено через 4 минуты и 19 секунд Я ICQ указал, может кто захочет воспользоваться... Так удобнее. А конечный результат (?) уже выложить здесь? |
| Автор: elementos 19.12.2007, 14:46 |
| мои глаза от красного цвета лопнут не могу там зарегестрироваться, дайте мне в личку како-нить действующий аккаунт с паролем, чтобы потестить |
| Автор: Vladimir_K 19.12.2007, 18:23 |
| Извини, чего не могу - того не могу... У меня там денюжка лежит. К тому же там регистрация с хитростями. |
| Автор: Vladimir_K 19.12.2007, 19:26 | ||
| Ну а если сделать вход в почтовый ящик Яндекса? Используется тот же принцип?
|
| Автор: Vladimir_K 19.12.2007, 21:55 |
| Ой, не могу удержаться, чтоб не софтопить: Страфиствюуйтэ! Я узьбекский вирюс. Па причин ужасный бэдность моей создателя и низкий уровин развитиё технология наша страна я не способин причинять какая-либа уред Ваш компютыр. Патаму очина прашю Уас, пажальста, сами сатрите какая-нибут важная для Уас файл, а патом разашлиты миня па почта другой адриса. Зарания благадарин за паниманий и сатрудничий. |
| Автор: aktuba 19.12.2007, 23:20 | ||||
Почти. Только поля иначе называются + надо один дополнительный запрос делать... |
| Автор: Vladimir_K 20.12.2007, 08:24 | ||
Вот эта часть:
Логин и пароль от реального почтового ящика! Этот код вводит пароль на странице, и типа нажимает кнопку "Войти"? И тогда уже можно на следующей открывшейся странице искать определенные слова и т.д.? У меня вот в этой части во время выполнения проги возникает ошибка. Я ее приводил выше. Правильно ли составлена эта часть кода? |
| Автор: elementos 20.12.2007, 10:44 |
| Vladimir_K, мне не нужен ваш акк с денгами, мне нужен любой работающий (без денег). впрочем, если для вас это такие сложности - решайте свои проблемы самостоятельно. |
| Автор: Vladimir_K 20.12.2007, 19:35 |
| Сложности... Вот: http://www.blackygold.com/pages/enter.php логин: w123 пароль: 12345 |
| Автор: Artem91 13.1.2008, 18:10 |
| А как сделать, чтобы при загрузке страницы, используя idHTTP, прога не подвисала? Processmessages не помогает!!! |
| Автор: remax 13.1.2008, 18:31 |
| Используй инди антифриз (TIdAntiFreeze) |
| Автор: VICTAR 13.1.2008, 18:32 |
| Запихни idHTTP в поток. Или используй другие компоненты (например SwinHTTP) |
| Автор: mr_smit 9.3.2008, 13:18 | ||||||||
Я пробую по простому вот так и всё равно не заходит:
http://ipicture.ru/ что ему ещё нужно? Вот код со страницы яндекса:
|
| Автор: dumb 9.3.2008, 18:05 | ||
|
| Автор: aktuba 11.3.2008, 14:44 |
Ему нужно не много - чтобы ты хоть краем глаза посмотрел в спецификацию http... |
| Автор: XerSon 17.3.2008, 22:15 |