Форум → Программирование → PHP для идиотов → выкачка html-кода
выкачка html-кода
Страницы: ← Следующая страница →
-
Всем, здравтсвуйте. У меня такой вопрос. Можно ли средствами php выкачать html-код страницы. Файл с исходником называется bank.phtml Потратил кучу времении вот, что пробовал
1) Способ первй - самый легкий
<?php
// Получить содержимое файла в виде массива. В данном примере мы используем
// обращение по протоколу HTTP для получения HTML-кода с удаленного сервера.
$lines = file('http://www.ya.com/');
?>
Результат такой - сервер очень долго думал и выдал мне следующее предупреждение:
Warning: file(http://www.ya.ru/): failed to open stream: Bad file descriptor in f:\home\localhost\www\bank.phtml on line 2
2) Выкачка с использованием сокетов
<?
$fp = fsockopen ("www.w3.org", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>";
} else {
fputs ($fp, "GET / HTTP/1.0\r\r");
while (!feof($fp)) {
$contents.=fgets ($fp,128);
}
fclose ($fp);
}
echo $contents;
?>
Опять ошибка
Warning: fsockopen() [function.fsockopen]: unable to connect to www.w3.org:80 (Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. ) in J:\home\localhost\www\bank.phtml on line 2
Fatal error: Maximum execution time of 30 seconds exceeded in J:\home\localhost\www\bank.phtml on line 2
3) Ну и вот попробовал еще вот так - неудачно
function getpage($url){
$cr=curl_init($url);
curl_setopt($cr, CURLOPT_TIMEOUT, 60);
curl_setopt($cr, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 2.4.7124)');
curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cr, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cr, CURLOPT_SSL_VERIFYHOST, 2);
$r = curl_exec($cr);
if(curl_error($cr)) put_file('log_error.txt','<br><b>Error</b>:'.curl_error($cr));
curl_close($cr);
return $r;
}
$page=getpage('http://www.google.ru');
Вот результат -
Fatal error: Call to undefined function curl_init() in J:\home\localhost\www\bank.phtml on line 3
Сначала подумал, что у меня php устарело и в принципе не поддерживает функцию curl_init(), переустановил новый денвер (третий). И опять то же самое
Вопрос, в принципе в следующем. Все это работает локально. Но не работает с удаленными страницами. И я понимаю почему. Но как-то не хочется ради выпонения МА-А-ЛЕНЬКОГО скрипта заводить платный хостинг. Знает ли кто-нибудь, можно ли выполнить это локально? Ну там определенные настройки Apache и PHP.
Заранее, огромное спасибо всем ответившим -
26 июня 2008 г. 10:56, спустя 5 минут 4 секунды
1, 2) пишет инвалид урл. включен ли allow_url_fopen в php.ini ?
3) не подключен модуль curl в php.iniвсе умрут, а я изумруд -
26 июня 2008 г. 11:27, спустя 31 минуту 21 секунду
Вопрос, в принципе в следующем. Все это работает локально. Но не работает с удаленными страницами. И я понимаю почему. Но как-то не хочется ради выпонения МА-А-ЛЕНЬКОГО скрипта заводить платный хостинг. Знает ли кто-нибудь, можно ли выполнить это локально? Ну там определенные настройки Apache и PHP.
Заранее, огромное спасибо всем ответившим
у тебя какой выход в инет ? -
26 июня 2008 г. 12:56, спустя 1 час 28 минут 18 секунд
Пытаюсь запустить скрипт на рабочей машине. Работаю в банке. И не особо разбираюсь в сетях, так что не могу ответить на вопрос welder ↓
По-поводу
1, 2) пишет инвалид урл. включен ли allow_url_fopen в php.ini ?
3) не подключен модуль curl в php.ini
allow_url_fopen у меня on
и модуль curl тоже подключен
Вот результат phpinfo() curl
cURL support enabled
cURL Information libcurl/7.16.0 OpenSSL/0.9.8d zlib/1.2.3
Может причина в том, что использую я denwer 3, правда я скачал все дополниетльные приложения с айта для работы с cURL-ом
Кстати, посокльку я пользователь на моем компе и у меня нет админовских прав - может это причина? -
26 июня 2008 г. 13:28, спустя 31 минуту 59 секунд
ну посмотри в браузере у тя идёт через прокси сервер или нет? -
-
26 июня 2008 г. 14:03, спустя 29 минут 26 секунд
ну делай так чтоб через прокси было
типа этого
<?php
// имя прокси сервера (адрес)
$proxy = "post";
// порт
$port = 8080;
// адрес чо тырим
$url = "http://www.pyha.ru/";
$fp = fsockopen($proxy, $port);
fputs($fp, "GET $url HTTP/1.0\r\nHost: $proxy\r\n\r\n");
while(!feof($fp)){
$text = fgets($fp, 4000);
echo ($text);
}
fclose($fp);
?>
или так
<?php
// Define a context for HTTP.
$aContext = array(
'http' => array(
'proxy' => 'tcp://post:8080',
'request_fulluri' => True,
),
);
$cxContext = stream_context_create($aContext);
// Now all file stream functions can use this context.
$sFile = file_get_contents("http://www.pyha.ru", False, $cxContext);
echo $sFile;
?>
а ваще на php.net много интересного если хотяб попытаться почитат -
-
26 июня 2008 г. 17:16, спустя 3 часа 3 минуты 4 секунды
Попробовал. Вот это
<?php
// имя прокси сервера (адрес)
$proxy = "post";
// порт
$port = 8080;
// адрес чо тырим
$url = "http://www.pyha.ru/";
$fp = fsockopen($proxy, $port);
fputs($fp, "GET $url HTTP/1.0\r\nHost: $proxy\r\n\r\n");
while(!feof($fp)){
$text = fgets($fp, 4000);
echo ($text);
}
fclose($fp);
?>
Вылезает такая ошибка
While trying to retrieve the URL: http://www.pyha.ru/
The following error was encountered:
Cache Access Denied.
Sorry, you are not currently allowed to request:
http://www.pyha.ru/
from this cache until you have authenticated yourself.
You need to use Netscape version 2.0 or greater, or Microsoft Internet Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please contact the cache administrator if you have difficulties authenticating yourself or change your default password.
Что бы это могло значить?
——————————————————————————–
Generated Thu, 26 Jun 2008 13:14:17 GMT by proxy.abb (squid/2.5.STABLE9) -
26 июня 2008 г. 17:19, спустя 2 минуты 45 секунд
You need to use Netscape version 2.0 or greater, or Microsoft Internet Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please contact the cache administrator if you have difficulties authenticating yourself or change your default password.
неужно у тебя Netscape 1.0? O_o или IE 2.0? O_Oвсе умрут, а я изумруд -
26 июня 2008 г. 17:22, спустя 2 минуты 28 секунд
You need to use Netscape version 2.0 or greater, or Microsoft Internet Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please contact the cache administrator if you have difficulties authenticating yourself or change your default password.
неужно у тебя Netscape 1.0? O_o или IE 2.0? O_O
Да в том то и дело, что нет -
26 июня 2008 г. 17:55, спустя 33 минуты 44 секунды
md5, ты что он же из под пыхи это делает и судя по всему не отсылаються какието заголовки которые ожидает сервер
хотя меня настораживает строчка$proxy = "post";
он походу ее не менял…. -
26 июня 2008 г. 18:32, спустя 37 минут 2 секунды
шуткую, хлопцi
md5, ты что он же из под пыхи это делает и судя по всему не отсылаються какието заголовки которые ожидает сервер
да, вот я тоже обратил внимание…
rainurka,// имя прокси сервера (адрес)
$proxy = "post";
тут надо адрес прокси ввести…
всё, я домой, грязные испанки седня будут наказаны, вымыты, выбриты и масло обмазаны! )все умрут, а я изумруд -
26 июня 2008 г. 18:54, спустя 21 минуту 11 секунд
а мне кажетцо это ответ прокси о том что нужна авторизация ему или типа того чото =) -
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!