формирование url из запроса

T
На сайте с 29.05.2005
Offline
0
1213

Я программирую в Дельфи. Из некоторого документа я формировала запрос на поиск, потом запрос кодировала и получала url строку http://www.yandex.ru/yandsearch?text='закодированный запрос', все было прекрасно.

Но когда мне понадобилось добираться до второй, третьей и далее страниц, то я стала использовать такой запрос (мне посоветовали на одном форуме):

http://www.yandex.ru/yandpage?q=0&p={номер страницы}&ag=d&qs=rpt%3Drad%26p%3D1%26text%3D{текст запроса}.

И теперь главная проблема и вопрос:

Если в качестве запроса использовать такой текст "... и пришли драконы", то все работает.

Но если в запросе есть знак "+", то яндекс вместо него ставит пробел, а если знак "&", то вообще игнорирует весь текст после.

То есть если например послать запрос "+delphi && +паскаль", то яндекс увидит только " delphi"

запрос '+delphi && +паскаль' (я его писала так для наглядности) по-настоящему выглядит так:

http://www.yandex.ru/yandpage?q=0&p=3&ag=d&qs=rpt%3Drad%26p%3D1%26text%3D%2Bdelphi+%26%26+%2B%EF%E0%F1%EA%E0%EB%FC

!!! Подскажите пожалуйста как правильно сформировать url строку, чтобы потом можно было смотреть дальнейшие страницы, и чтобы яндекс видел запрос целиком!!!!!

Заранее спасибо ;) :smoke:

B
На сайте с 03.02.2005
Offline
165
#1
Интеграция сайтов с 1С (товары, контрагенты, документы, заказы). Консультации и услуги. Есть готовые решения - быстро и недорого. Приглашаю к сотрудничеству агентства и веб-студии.
T
На сайте с 29.05.2005
Offline
0
#2

то есть если у меня в запросе есть знак &, то я вместо него должна писать "&.#.3.8.;." или "&.a.m.p.;." (точки не читайте, просто на предпосмотре иначе этого не видно) , а потом кодировать и добавлять к строке

http://www.yandex.ru/yandpage?q=0&p={номер страницы}&ag=d&qs=rpt%3Drad%26p%3D1%26text%3D

или я должна эти символы вставлять вместо символов, заменяющих & в уже готовом запросе?

ну, может я чего-то не поняла, но я делала и так, и так, и у меня не получилось.

И, к тому же, в той ссылке не было сказано, что делать с "+", которые яндекс заменяет на пробелы.

Я очень рассчитываю на помощь. Желательно с примерами, чтобы я поняла.

🙄

InSAn
На сайте с 13.01.2003
Offline
60
#3

вместо "+" - %2B

";" - %3B

"&" - %26

"?" - %3F

и т.д.

в форму запроса на Я пишите один символ и после выполнения запроса смотрите на УРЛ.

ADPRO - Мы знаем, что Вам нужно! (http://adpro.ua)
deadcat
На сайте с 04.04.2005
Offline
27
#4

Нет...

Для кодирования урлов есть стандарт RFC1738 в PHP есть соответствующии функции urlencode\urldecode...

Все очень просто. Символы не английского алфавита заменяются на комбинацию вида %hh (где hh ASCII-код), исключение пробел - он заменяется на '+'... Вот и все... Проблема в чем?..

valentin shergin research laboratory (http://shergin.com), erratum machine – самоорганизация документов, cms, cmf (http://erratum.ru)
T
На сайте с 29.05.2005
Offline
0
#5

http://www.yandex.ru/yandpage?q=0&p=3&ag=d&qs=rpt%3Drad%26p%3D1%26text%3D%2Bdelphi+%26%26+%2B%EF%E0%F1%EA%E0%EB%FC

ну вот я так и кодировала

как вы сказали

противоречий нет

но тогда почему (зайдите по этой ссылке) яндекс увидел только первое слово?

InSAn
На сайте с 13.01.2003
Offline
60
#6

в этом случае "+" нужно заменять на "%252B"

Остальное - в качестве домашнего задания :)

Хинт: задайте обычный запрос, необходимый вам, а потом скопируйте ссылку с третьей страницы.

T
На сайте с 29.05.2005
Offline
0
#7

В результате я сделала так:

все знаки кроме ' ', '+' и '&' кодировала один раз.

А остальное заменила

'&' => %2526

'+' => %252B

' ' => %2520

☝ То есть по сути кодировала два раза. А остальные знаки мне не нужны.

Ну кто мог знать, что у яндекса все через одно место?😡

Спасибо вам огромное за помощь!!!🍻

deadcat
На сайте с 04.04.2005
Offline
27
#8

Тоня, мы очень рады! Заходи еще!)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий