![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
americanets |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
Как выдернуть необходимую информацию с другого сайта, например с вингарда
![]()
Это сообщение отредактировал(а) americanets - 15.2.2007, 20:40 -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
||||
|
|||||
murod |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 17.9.2005 Где: Uzbekistan/Tashke nt Репутация: 2 Всего: 4 |
его можно получить AJAX ом. Делаеш запрос по нужному адресу. Получаеш ответ и парсиш на JavaScript'e
--------------------
Люди всего мира берегите природу! |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
а при помощи php как ?
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Саму страницу берешь через curl или сокеты, как вариант вот так:
А далее регулярные выражения: http://forum.vingrad.ru/topic-131511.html http://php.net/preg_match Добавлено @ 18:02 murod, совсем не нужен тут AJAX. -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
mishaSL,
а почему бы просто не взять странцу функцией file |
|||
|
||||
mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Т.к. это не безопасно. На эту тему можешь прочитать следующую статью: http://vingrad.ru/PHP-PHPNETHTTP-003044 -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
Powerhead |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 7.11.2006 Репутация: 1 Всего: 2 |
1. Не факт, что отключение allow_url_fopen - признак ума. Опция включена по умолчанию и я не вижу ни одной причины, по которой хостеру стоило бы беспокоится на её счет. По моему мнению, у большинства хостеров она включена. 2. Ну и подвиснет до set_time_limit. В случае использования сокетов, он тоже подвиснет до таймаута, не вижу особой разницы. 3. Если случайно пропущена обработка входного параметра, то никакие сокеты не помогут. 4. Неправда. $url='http://www.ya.ru:80'; или любой другой порт 5. Затем, что это проще и позволяет сэкономить время. Мы же не работаем напрямую с процессором, к примеру. И еще не факт, что использование sockets даст хоть какой-то прирост в производительности. |
|||
|
||||
mishaSL |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Огромная разница когда скрипт виснет или когда скрипт корректно завершает работу через скажем 10 секунд.
Через тотже curl при передачи некорректного url ошибка не появляется и скрипт не виснет, а ошибку без проблем получаем curl_errno() или curl_error(). Если передать некорректный url в file_get_contents(). То соответственно возникает Warning. И еще не надо забывать то, что в большинстве случаев необходимо получить код ответа сервера. В данном случае хотябы проверить 200 или нет... В общем Powerhead, PHP позволяет осуществить эту задачу различными способами, но для каждой задачи предназначены определенные функции. Функции fopen, file, file_get_contents предназначены для работы с локальными файлами. А для работы c удаленными файлами предназначены функции с сокетами и curl-ом. Это сообщение отредактировал(а) mishaSL - 1.3.2007, 20:36 -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
||||
|
|||||
Powerhead |
|
||||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 7.11.2006 Репутация: 1 Всего: 2 |
В случае fopen, file_get_contents и тд, скрипт сразу же выдаст вполне корректный warning на несуществующий хост или страницу. Зачем усложнять себе жизнь? Конечно, если нужен скрипт с функциональностью броузера - тогда согласен. Но, в большинстве случаев, проще воспользоваться врапперами http, https, ftp и тд, которые все поддерживаются fopen. Таймаут на tcp соединение устанавливается очень просто: ini_set('default_socket_timeout', 10); и по умолчанию равен 60.
А по-моему, в большинстве случаев это лишнее. Но если сильно нужно, то разве не проще так?
Получаем:
Далеко не только для этого: http://www.php.net/manual/ru/wrappers.php Это сообщение отредактировал(а) Powerhead - 2.3.2007, 03:48 |
||||||||||
|
|||||||||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Хм, не безопасно? а ты хочешь пользовательский интерфейс для парсинга делаешь что ли? тогда быть может, а вообше парсеры как правило юзаються из админки, ну а если у тебя дырявая админка, то тут уже нету разнцы, что ты юзаешь... Да и проблем не каких не было с $file, отлично он все воспринимает и подготавливает файлы к парсингу) |
|||
|
||||
mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Что значит вполне корректный warning? Warning - это и есть warning, он не может быть корректным или нет. BuShaRt, Powerhead, я не пытаюсь вас переспорить, я пытаюсь объяснить минусы данного подхода. В грабере необходимо проверять получил ты ответ 200 или 404 к примеру. Получяя информацию с помощью stream_get_meta_data(), при ответе сервера(к примеру 401, 404, 503 и т.д.) данная функция не будет работать и fopen будет возвражать warning. И соответственно разработчика (т.е. нам) не узнать отклик, либо новость поменяля адрес (404), либо сайта больше нет (тогда его необходимо занести в отдельный список для дальнейшей проверки) В этом подходе есть минусы, которые приводят к warning-ам, что очень плохо. И недостаточность получаемой информации... Со стороны хостеров - это уменьшает возможность XSS атак, причем очень сильно уменьшает... А зачем оставлять такую возможность, если без allow_url_fopen можно обойтись.
Причем тут готов или нет... А если адрес устарел или еще что с ним... -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
americanets |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
Загружаю курс валют с ЦБ, на локальном компьютере все ОК, а вот на сервере не работает, они закрывают доступ к внешним данным (Warning: fopen(http://www.cbr.ru/scripts/XML_daily.asp)) можно ли его обойти?
на,
Но что-то не работает ? -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
||||
|
|||||
mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Вот так должно работать:
-------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
работает а что за функция curl_init() ?
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
-------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |