file get html php не работает
file_get_contents: не работает функция
Здравствуйте, сделал парсер для сайта, но пару дней назад выдал мне ошибку
Warning: file_get_contents(http://mySite.ru/) [function.file-get-contents]: failed to open stream: Connection refused in /var/www/site.ru/data/www/site.ru/informer/go.php
Функция file_get_contents() какой бы сайт не вводил, все ровно выдает ошибку.
5 ответов 5
Учитесь читать сообщения об ошибках.
failed to open stream: Connection refused in
Это сообщение означает, что не удалось установить соединение с сервером. Либо сайт который вы парсили упал, либо ваш парсер банально забанили.
Некоторые хостеры блокируют эту функцию для своей же безопасности. А некоторые крупные и не очень порталы блокируют эту функцию для того, чтобы не спарсить данные страницы и не создать сайт-подделку.
Всем привет, у меня не работала file_get_contents, то есть не выводил вообще не чего, переменная куда я записывал свой файл, была пустой, я просмотрел код на наличие ошибок, проверил включена ли данная функция в php.ini, но чисто случайно решил указать другой путь вместо https://domen.ru/file.txt, я указал полный локальный путь, то есть /var/www/xxxxxx/data/www/domen.ru/file.txt, у меня все заработало.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.9.16.40232
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
PHP file_get_html не работает
Я использовал библиотеку simple_html_dom, но я не могу получить содержимое HTML только для 1 URL, но я получаю ошибку 503. Проверьте мой код ниже.
Ошибка : предупреждение: функции file_get_contents( http://www.amazon.com/ГП/предложение-листинг/B001F0M4K8/номер модели / ref=dp_olp_all_mbc/183-8463780-9861412?т. е.=UTF8&condition=новый ) [function.file-get-contents]: не удалось открыть поток: запрос HTTP не удалось! HTTP/1.1 503 служба недоступна в D:\xampp\htdocs\webcrawler-amazon\webcrawler-amazon\simple_html_dom.php на линии 76
Я застрял здесь, так что, пожалуйста, помогите мне.
4 ответа
Я пытаюсь получить данные заголовка и мета-описания страницы, предоставляя им url целевой страницы, но file_get_html() всегда возвращает значение FALSE. Есть предложения? кстати, я включил расширение php php_openssl.
Я думаю, что сервер просто блокирует ваш запрос, вы не сможете извлечь из него данные, используя простые запросы HTTP.
Вы можете попробовать использовать curl, прокси или и то, и другое (для этого есть готовые решения, например: AngryCurl или RollingCurl )
Я рекомендую вам сделать это с помощью cURL : http://php.net/manual/en/book.curl.php
Вы можете использовать его с PHP или в командной строке. В Интернете есть масса примеров.
Это система защиты от ботов Amazon.
Возвращенная страница начинается со следующего комментария HTML:
Вам нужно либо очень хорошо имитировать поведение реального клиента с помощью браузера, либо спросить его об одобренном способе автоматического получения данных из его систем. В любом случае использование API лучше (и проще), чем удаление веб-страниц.
Я делаю то же самое, они посылают вам следующее. Иногда это удается.
Похожие вопросы:
Я пытаюсь получить данные заголовка и мета-описания страницы, предоставляя им url целевой страницы, но file_get_html() всегда возвращает значение FALSE. Есть предложения? кстати, я включил.
Я делаю проект домашней автоматизации с Arduino и использую Teleduino для удаленного управления LED в качестве теста. Я хочу взять содержимое этой ссылки и отобразить его на странице php.
Я использую этот код по file_get_html для Эхо тах из файла html в php. но я получаю ошибку после запуска моего кода в локальном режиме. ошибка : Фатальная ошибка: Неперехваченная ошибка: вызов.
Не используйте библиотеку simple_html_dom.php
Это библиотека предназначена для работы с HTML-содержимым при помощи DOM, т.е. по аналогии с javascript. Известно, что, если не принять специальных мер, язык РНР воспринимает код html точно также, как и любой другой текст – в виде константы типа string определенной длины. Чтобы с текстом (кодом) html можно было бы работать, используя модель DOM, нужны те или иные приемы.
Одним из них и является библиотека simple_html_dom.php. Ее можно подключить в любом месте файла рнр, например, следующим образом:
После чего ее можно использовать. Да, можно. Не, не нужно.
Объем этой библиотеки занимает 63,5 КБайт. Вроде бы, немного. Число строк внутри ее файла – всего-то 1700 с небольшим. Казалось бы, ерунда. Однако, она существенно замедляет работу программ.
Пример
Рассмотрим простейший пример, из которого это видно. Поставим задачу:
Найти в конце некоего файла html последний тег (имеющий и вывести на экран его содержимое (т.е. текст, который он содержит).
В javascript эта задача вполне знакомая и решается в пару строк. На РНР, в принципе, все не намного сложнее.
Вот программный код, использующий библиотеку simple_html_dom.php:
Однако, данный задачу вполне можно решить, используя чистый РНР, без этой библиотеки. Благо, РНР, как и javascript, вполне умеет работать с DOM. Надо лишь дать ему понять, что обрабатывается не просто текстовая (string) константа, а, именно – код html:
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
file_get_contents — Читает содержимое файла в строку
Описание
Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком, поскольку для улучшения производительности функция использует технику отображения файла в память (memory mapping), если она поддерживается вашей операционной системой.
Список параметров
Имя читаемого файла.
Начиная с версии PHP 5 можно использовать константу FILE_USE_INCLUDE_PATH для поиска файла в include path.
Смещение, с которого начнется чтение оригинального потока.
Поиск смещения ( offset ) не поддерживается при работе с удаленными файлами. Попытка поиска смещения на нелокальных файлах может работать при небольших смещениях, но этот результат является непредсказуемым, так как он работает на буферизованном потоке.
Максимальный размер читаемых данных. По умолчанию чтение осуществляется пока не будет достигнут конец файла. Учтите, что этот параметр применяется и к потоку с фильтрами.
Возвращаемые значения
Функция возвращает прочтенные данные или FALSE в случае возникновения ошибки.
Ошибки
Примеры
Пример #1 Получить и вывести исходный код домашней страницы вебсайта
Пример #2 Поиск файлов в include_path
Пример #3 Чтение секции файла
Результатом выполнения данного примера будет что-то подобное:
Пример #4 Использование потоковых контекстов
Список изменений
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
При использовании SSL, Microsoft IIS нарушает протокол, закрывая соединение без отправки индикатора close_notify. PHP сообщит об этом как «SSL: Fatal Protocol Error» в тот момент, когда вы достигнете конца данных. Чтобы обойти это, вы должны установить error_reporting на уровень, исключающий E_WARNING. PHP версий 4.3.7 и старше умеет определять, что на стороне сервера находится проблемный IIS при открытии потока с помощью обертки https:// и не выводит предупреждение. Если вы используете fsockopen() для создания ssl:// сокета, вы сами отвечаете за определение и подавление этого предупреждения.
Смотрите также
File get html php не работает
Подскажите, пожалуйста, каким образом включить функцию file_get_contents() на сервере?
Админ не я, а мой друг, так у него там кучи всякой защиты и говорит, что отключить функцию просто, а включит не знает как.
Подскажите как можна выйти из ситуации.
Если она не работает, то может быть она запрещена в php.ini.
А может функция работает, а просто не открывает внешние УРЛы )
Какую ошибку пишет?
да, для внешних урлов нужно включить настройку allow_url_fopen в конфиге похапе
allow_url_fopen = 1 потенциальная дырка
Ошибку не дает, при попытке напасть что-то типа
Ничего не выдает, просто пустой лист. Что это может быть?
Она запрещена в php.ini, не включены внешние подключения тлт что-то другое?
Надо включать просмотр ошибок либо вообще логи смотреть.
Попробуйте провернуть то же самое, но вместо урл указать файл на вашем же сервере и посмотреть. если файл выведется, значит действительно allow_url_fopen выключены. Если так же не выведется, то надо смотреть логи. Включайте полный вывод ошибок и там все будет написано.
defuzz добавил 04.11.2008 в 14:40
Как выше правильно сказали, Вам необходимо включить allow_url_fopen.
Данный параметр также можно включить в htaccess следующей директивой:
либо изменить значение allow_url_fopen в php.ini
их надо писать в httpd.conf
Можно. Если не запрещено. Но обычно запрещают в целях безопасности.