Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 19.12.2009, 23:38   #1
Sianukvil
 
Регистрация: 19.12.2009
Сообщений: 5
Сообщение Парсинг translate.ru

Добрый вечер, ребята!
Нужна ваша помощь: нужно написать парсер перевода на сайте translate.ru, но я не могу ссобразить, как... Итак, постараюсь объяснить.
Откроем исходный код индексной страницы(для нумерации строк открою в Dreamweaver):

- строка 40 : <form name="aspnetForm" method="post" action="Default.aspx" id="aspnetForm"> (тут все ясно: переменные методом post отправляются сценарию Default.aspx)

- строка 553 : <textarea name="ctl00$SiteContent$MA_trasnlfo rm$sourceText" rows="2" cols="20" id="ctl00_SiteContent_MA_trasnlform _sourceText" title="Введите или скопируйте текст для перевода" class="rwin" onkeyup="textLimit();" onchange="textLimit();" onSelect="captureRefers();" onfocus="pasteText(this);" onblur="blurText(this);" onkeypress="return ctrl_enter(event, this.form);">text</textarea> (область для ввода исходного текста. Немного смущает имя...)

- строка 629 : <input type="submit" name="ctl00$SiteContent$MA_trasnlfo rm$bTranslate" value="Перевести" onclick="if(!checkST())return false;WebForm_DoPostBackWithOptions (new WebForm_PostBackOptions(&quot;ctl00 $SiteContent$MA_trasnlform$bTransla te&quot;, &quot;&quot;, false, &quot;&quot;, &quot;/Default.aspx/Text&quot;, false, false))" id="ctl00_SiteContent_MA_trasnlform _bTranslate" class="translit" title="[Ctrl]+[Enter]" /> (кнопка, при нажатии на которую, выполняется ряд не совсем понятных мне ф-ий)

Итак, я хочу получить следущий результат: вводим в скрипт на php url, нечто типа http://translate.ru/default.aspx?text=текстДляПеревода и парсим перевод. Вся загвоздка именно в передаче post-переменной методом get: ничего не работает(к примеру, http://translate.ru/default.aspx?ctl00$SiteContent$MA_t rasnlform$sourceText=текстДляПерево да(я говорил про это нехорошее имя)).

Короче, я думаю вы поняли, чего я хочу. Ссори за длинный пост, за отнятое время, но прошу помочь...

ЗЫ С asp я не очень, только php, поэтому, если проблема заключается только в незнании каких-то ньюансов технологии, сильно не матюкайте..
Sianukvil вне форума
Старый 21.12.2009, 10:30   #2
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Цитата:
Вся загвоздка именно в передаче post-переменной методом get: ничего не работает
А ты их и таким образом и не передашь.

Последний раз редактировалось ssdm; 21.12.2009 в 10:40.
ssdm вне форума
Старый 21.12.2009, 10:38   #3
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

http://webi.ru/webi_articles/6_7_f.html
Вторая часть статьи должна помочь.
А именно:
Код:
// после отправки данных можно получить ответ сервера и прочитать информацию выданную файлом, в который отправили данные...
// читаем данные построчно и выводим их. Конечно, эти данные можно использовать по своему усмотрению.
while($gets=fgets($fp,2048))
{
print $gets;
}

Последний раз редактировалось ssdm; 21.12.2009 в 10:54.
ssdm вне форума
Старый 21.12.2009, 11:22   #4
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

asp учитывает тип браузера клиента и большинство переменных окружения - те ваш бот должен "тащить" все переменные окружения
Стрелок-охотник
mv28jam вне форума
Старый 21.12.2009, 15:15   #5
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Кстати в такой же ситуации как у вас(у меня было посложнее), я пришел к выводу что надо писать бота на Delphi и написал вообщем-то.
Стрелок-охотник
mv28jam вне форума
Старый 21.12.2009, 22:02   #6
Sianukvil
 
Регистрация: 19.12.2009
Сообщений: 5
По умолчанию

ssdm, mv28jam, спасибо за ответы. Короче нужно сформировать post-запрос, отправить на сервер, считать результат....Теперь не знаю, как корректно сформировать запрос, т.к. через форму отправляется миллион непонятных переменных. поэтому вопрос - можно ли каким-либо образом выковырнуть из браузера или откуда-то еще примерный запрос, на основе которого можно будет сформировать свой. Поверхностно погуглил на эту тему - ничего вразумительного не нашел...

Насчет переменных окружения...если честно, сложновато для меня. Наверное, сначала попробую все варианты с простой отправкой запросов, если не получится, будем изучать...

И еще :
PHP код:
<textarea name="ctl00$SiteContent$MA_trasnlfo rm$sourceTextrows="2" cols="20" id="ctl00_SiteContent_MA_trasnlform _sourceText" title="Введите или скопируйте текст для перевода" class="rwin" onkeyup="textLimit();" onchange="textLimit();" onSelect="captureRefers();" onfocus="pasteText(this);" onblur="blurText(this);" onkeypress="return ctrl_enter(event, this.form);">text</textarea
ctl00$SiteContent$MA_trasnlfo rm$sourceText - это имя переменной, какое-то извращенное и значки доллара меня смущают.

Отправка одной переменной ctl00$SiteContent$MA_trasnlfo rm$sourceText с каким-нибудь значением методом, описанным на webi.ru не работает...

Много всего понаписал, поэтому главная мысль: как узнать, какой запрос формирует браузер для отправки на сервер?
Sianukvil вне форума
Старый 22.12.2009, 00:27   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
поэтому вопрос - можно ли каким-либо образом выковырнуть из браузера или откуда-то еще примерный запрос, на основе которого можно будет сформировать свой. Поверхностно погуглил на эту тему - ничего вразумительного не нашел..
а снифферы для кого придумали?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 24.12.2009, 19:13   #8
Sianukvil
 
Регистрация: 19.12.2009
Сообщений: 5
По умолчанию

Пепел Феникса, спасибо.

Запрос вытянул. При отправке на сервер, он возвращает 200 код, т.е. ОК. Но вместо html-кода появляются краказябры:
  • Самое начало:
    PHP код:
    HTTP/1.1 200 OK Servernginx/0.6.35 DateThu24 Dec 2009 15:48:01 GMT Content-Typetext/htmlcharset=utf-8 Transfer-Encodingchunked Connectionkeep-alive Keep-Alivetimeout=20 X-Powered-ByASP.NET X-AspNet-Version2.0.50727 Set-CookieUserParams=PROMTlang=ru&UID=978038453domain=.translate.ruexpires=Tue24-Dec-2019 15:56:42 GMTpath=/ Set-CookieselDirText=selectedDir=er&selectedTpl=Generalexpires=Fri24-Dec-2010 15:56:42 GMTpath=/ Cache-Control: private Content-Encodinggzip a ‹&#65533;����� 6313 нЅks#З‘(ъYЉРиi{`HвIО ‰e|ЋH 9¤4‡С�љ@“ 4ЬЭаcЖЬђ-ЫлЅТZ»Юu¬ЏwэЬwгЬЅ'Оh¤±FТhqцЂбь’›™UЭ]ЭиБЗШЮ]Ќ-и®GVVVVfU>ЮxэоЌйыҐтцКЊФ°›єґІ1µёP’д‘Tj+WJҐ¦ЛУТѓщтТў”I¦ҐІ©ґ,НЦЊ–ў§R3ЛІ$7l»=‘J%ЏrIГ¬§Кk©cl+ѓ•щЧ[Ё™¬Щ5yтЌЧпRЏЗMЅeBЪЙЊЏЏік¬°ЄФ&пЪљ*«руµы-]k©#Э........... 
  • В середине те же краказябры
  • В конце:
    PHP код:
    400 Bad Request 

Пытался изменить кодировку вывода ф-ией iconv() - не помогло

Скажите, как исправить...
Sianukvil вне форума
Старый 25.12.2009, 08:36   #9
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

ASP понимает что ваш бот не браузер! Поэтому вы и получаете ошибку. Ваш бот должен иметь все признаки браузера - те как минимум тащить за собой все переменные окружения и сторить полные header'ы.
90% что создатели сайта специально сделали защиту от ботов.
Стрелок-охотник
mv28jam вне форума
Старый 29.12.2009, 20:34   #10
Sianukvil
 
Регистрация: 19.12.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от mv28jam Посмотреть сообщение
ASP понимает что ваш бот не браузер! Поэтому вы и получаете ошибку. Ваш бот должен иметь все признаки браузера - те как минимум тащить за собой все переменные окружения и сторить полные header'ы.
90% что создатели сайта специально сделали защиту от ботов.
Все ясно... изучил другие варианты - не устроили, придется писать бота. Не буду создавать новую тему, а спрошу здесь: mv28jam, не подскажите, как в Дельфях передать эти самые переменные окружения на сервер, чтоб он(сервер) корректно мог их использовать. Если можно, напишите источник информации, который вы использовали при написании вышеупомянутого бота...с остальным, думаю, разберусь сам. Зараннее спасибо!
Sianukvil вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать запрос к translate.google... Crystal_Ra Работа с сетью в Delphi 1 19.07.2009 23:53
парсинг Html eldar Общие вопросы Delphi 4 23.04.2009 20:42
Парсинг строки beemoto Общие вопросы Delphi 18 12.04.2009 18:52
Парсинг страницы Terikon Общие вопросы Delphi 3 04.04.2009 00:32