Как автоматически отправить запрос в сервисе Яндекс.поиск по сайту

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
АндрейБолконский
Сообщения: 2
Зарегистрирован: 18 ноя 2017, 09:00

18 ноя 2017, 09:19

Добрый день. На разрабатываемом сайте необходимо интегрировать сервис Яндекс.Поиск по сайту. На сайте существует отдельная форма поиска доступная с любой страницы, данные с которой пересылаются POST запросом на отдельную страницу поиска /search.php, где и встроена система Яндекс.Поиск по сайту. Значение текста запроса из массива $_POST вставляются в строку запроса Яндекс. Необходимо автоматически, без действия пользователя, отправить событие SUBMIT, чтобы был выполнен Поиск и результаты отобразились на этой же странице. При вызове метода submit() над формой по document.ready происходит редирект на специальную страницу яндекса, где и отображаются результаты. При вызове submit() по window.load() не представляется возможность обратиться к изначальной форме по id, так как форму нельзя найти в DOM. Может кто подскажет, как реализовать? Заранее спасибо.
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

18 ноя 2017, 13:02

Правильно сформулированный вопрос содержит в себе большую часть ответа :)
1. Данные можно передавать и методом GET
2. Страницу можно использовать и свою, использовав JavaScript который предоставляет Яндекс
3. Форма ищется легко по id ya-site-form0
Даже самый дурацкий замысел можно воплотить мастерски
АндрейБолконский
Сообщения: 2
Зарегистрирован: 18 ноя 2017, 09:00

18 ноя 2017, 13:21

AiK писал(а):Правильно сформулированный вопрос содержит в себе большую часть ответа :)
1. Данные можно передавать и методом GET
2. Страницу можно использовать и свою, использовав JavaScript который предоставляет Яндекс
3. Форма ищется легко по id ya-site-form0
Спасибо за ответ) возможно я не до конца правильно сформулировал проблему: с сайта яндекса я взял как раз тот JavaScript, который позволяет выводить результаты поиска на свою страницу. И данной яндексом форме я присвои id и генерировал submit по document.ready(). В результате скрипт отрабатывал, но результаты выводились на отдельной странице, а не на моей, как мне необходимо. Подумав, что дело в том, что submit() отправлялся «слишком рано», я попытался генерировать submit() по window.onload(), но getElementById над изначальной формой вернул NULL, так как формы уже в DOM не было, а она развернулась в сложную структуру таблиц.

Попробую сделать getElemtById над формой с предложенным вами id, может отработает.
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

19 ноя 2017, 14:30

Яндекс банить будет, у него специальный сервис есть Яндекс.XML
[syntax=Delphi] [/syntax]
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

19 ноя 2017, 17:31

Поиск по сайту и XML разные сервисы.
Даже самый дурацкий замысел можно воплотить мастерски
АндрейБолконский
Сообщения: 2
Зарегистрирован: 18 ноя 2017, 09:00

19 ноя 2017, 17:33

Все оказалось проще некуда)

Результаты отображаются в ответ на GET-запрос такого типа:
http:/site.ru/page.php/?searchid=7777777&text=query&web=0

Где site.ru/page.php- страница для отображения результатов (прописывается в настройках поиска, на нее надо поместить код результатов), 7777777 - ID поиска, а "query" - запрос пользователя.
Такую ссылку можно формировать скриптом, если известен запрос пользователя. Текст запроса нужно кодировать через encodeURIComponent или аналог.

Тему можно считать закрытой. Всем спасибо)
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

20 ноя 2017, 13:33

>Поиск по сайту и XML разные сервисы.
Подумал, зачем-то, что он парсит выдачу..
[syntax=Delphi] [/syntax]
Ответить