![]() |
php: как получить текстовый образ страницы?
Уважаемый All,
Если на странице сайта в IE сделать Выделить все->Копировать, то можно сохранить результат в текстовый файл (картинки не нужны). Как сделать то же самое с помощью php? Вариант с удалением тегов не подходит, страница с функциями, include etc. Нужно либо эмулировать работу php-IE, либо где-то взять готовый результат. Типа направить результат IE в поток, к которому привязан txt. Спасибо. |
это почему же не подходит? очень даже подходит именно такой вариант(с удалением тегов).
1. конектишься к серверу по сокету. 2. получаешь целиком всю страницу(HTML-код). 3. далее пропускаешь ее через парсер(удаление тегов и т.д.). |
Sheryld
А не подскажешь насчет как законнектиться по сокету и получить всю страницу? Мне такое делать не приходилось... В мануале пример - бота какого-то делать. Вроде нужно получить контент? Спасибо. |
Цитата:
|
RaZEr
Спасибо за линки. Все равно, сокет не открывается. Код простейший из примера, но дает ошибку. Код такой: $fp = fsockopen("www.blabla.com/page.php", 80, $errno, $errstr, 5); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.blabla.com/page.php\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 4096); } fclose($fp); } Ошибка "fsockopen(): php_network_getaddresses: gethostbyname failed" и "fsockopen(): unable to connect to www.blabla.com/page.php:80" Порт менял на 0 (хост под юниксом). Тогда "Операция успешно завершена. (0)", но строки из файла на вывод не идут. Нужно разрашить такие соединения на www.blabla.com? Не подскажешь, что криво сделано? Спасибо. |
Нашел где-то вот такой кусок кода. Он делает все, что нужно.
$content = downloadUrl("http://www.blabla.com/page.php"); echo $content; function downloadUrl($url) { $urlParts = parse_url($url); if ("" == $urlParts["host"]) return ""; if ("" == $urlParts["port"]) $urlParts["port"] = 80; if ("" == $urlParts["path"]) $urlParts["path"] = "/"; $fp = fsockopen($urlParts["host"], 80, $errno, $errstr, 30); if (!$fp) return ""; fputs($fp, "GET ".$urlParts["path"]." HTTP/1.0\r\nHost: ".$urlParts["host"]."\r\n\r\n"); $rv = ""; while (!feof($fp)) $rv = $rv.fgets($fp,128); fclose($fp); return $rv; } Всем еще раз спасибо. |
Ошибки увидел в первом коде (понимаю, что готово... для общего развития :)):
1: fsockopen("www.blabla.com", 80, $errno, $errstr, 5); 5: $out = "GET /page.php HTTP/1.1\r\n"; 6: $out .= "Host: www.blabla.com\r\n"; |
Проще и удобнее для подобных вещей юзать библиотеку CURL (ну если есть на хостинге конечно), таже задача - две строки...
|
про всего удаленно открывать файлы fopen или забирать их целиком file_get_contents - но это должно быть разрешено в настройках сервера
|
V0iD
Ты прав, ошибки есть :) Sych Не разрешено, хотя спасибо за идею. Hubbitus Про CURL не читал пока. Почитаю. Спасибо всем за советы. |
| Часовой пояс GMT +4, время: 17:44. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.