puz219
8.09.2007, 16:46:06
Witam.
czy jest taka możliwość, żeby skopiować zawartość strony i zapisać ją do pliku.
Nie chodzi o kopiowanie kodu strony, tylko, żeby zrobić, tak, żebym wpisywał w okno formularza link do strony, a odpowiedni skrypt php, żeby zapisywał zawartość strony (tak jakbym zaznaczył myszką wszystko, skopiował i wkleił do notatnika) do pliku.
Czy taka operacja jest możliwa, jeśli tak, to byłbym wdzięczny, gdyby ktoś mi napisał jakiej funkcji muszę użyć, żeby osiągnąć taki efekt.
drPayton
8.09.2007, 16:50:10
curlI zerknij na: Example 418. Using PHP's cURL module to fetch the example.com homepage
puz219
8.09.2007, 17:22:23
Czy tą funkcję muszę jakoś zdefiniować albo coś w tym stylu, bo chciałem zobaczyć jak ona działa i jak skopiowałem kod z manuala
<?php
$ch = curl_init();
$fp = fopen(\"example_homepage.txt\", \"w\");
curl_setopt($ch, CURLOPT_URL, \"http://www.google.pl/\");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
,to wyświetla mi coś takiego
Fatal error: Call to undefined function curl_init() in C:\AppServ\www\FILMY-PuZ\zapisz.php on line 3Co z tym zrobić.
jaypablo
8.09.2007, 17:36:12
przerób może mój skrypt
http://forum.php.pl/php_curl_i_pobranie_za...niu_t76816.htmlzobacz jeszcze to
<?php
$ip = $_SERVER["REMOTE_ADDR"];
function GetPage($url, $ip, $timeout = 5)
{
$result = '';
if(!isset($url['port'])) $url['port'] = 80; $port = $url['port'];
if(strlen($url['path']) == 0
) $url['path'] = '/';
if ($fp = @fsockopen($url['host'], $port, $errno, $errstr, $timeout)) {
"GET " . $url['path'] . " HTTP/1.0r\n" .
"Host: " . $url['host'] . ($port != 80 ? ':' . $port : '') . "r\n" .
"Accept: text/html; */*r\n" .
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)r\n" .
"X_Forwarded_For: " . $ip . "r\n" .
"Via: " . $ip . "r\n" .
"Client-IP: " . $ip . "r\n" .
"Connection: closer\nr\nr\n");
while (!feof($fp) && ($buf = fread($fp, 8192
))) $result .= $buf;
return $result;
} else
echo "Błąd $errno: $errstr !";
return false;
}
$zzz = GetPage('http://forum.php.pl', '83.9.251.98');
$plik=fopen("tp.txt", "w+"); ?>
puz219
8.09.2007, 18:00:16
@jaypablo nie wiem za bardzo o co ci chodzi.
Mnie się wydaje, że nie mam zainstalowanego tego cURL (chyba, że wchodzi w skład PHP).
Korzystam z AppServ. czy cURL jest już domyślnie zainstalowany z php, czy muszę go instalować osobno.
Pobrałem jakąś paczkę ze strony curl.haxx.se/ lecz nie wiem jak to zainstalować. Proszę o jakieś rady
drPayton
8.09.2007, 18:47:46
W php.ini odkomentuj linię:
extension=php_curl.dll
(rozszerzenie musi być dostępne, więc jeśli nie korzystasz z domyślnego katalogu rozszerzeń, przekopiuj ten plik do Windows/System32
Tam też przekopiuj pliki: libeay32.dll oraz ssleay32.dll
Zrestartuj serwer i będzie działać :]
puz219
8.09.2007, 20:18:44
@drPayton dzięki za pomoc, wszystko działa tak jak należy.
Tylko teraz pytanie, czy da się zrobić tak, żeby do pliku zapisywało tylko informacje ze strony, bo teraz zapisuje tak, jak bym kliknął pokaż źródło strony, potem skopiował wszystko i wkleił do notatnika, a ja chciałem, żeby zapisywało tylko informacje ze strony (żeby rezyltat był dokładnie taki sam, jak gdybym otworzył stronę, zaznaczył wszystko, skopiował i wkleił do notatnika. ).
Czy to jest możliwe do zrobienia, a jeśli tak, to czy musze jeszcze jakoś skonfigurować ten skrypt curl? będę wdzięczny za odpowiedź.
drPayton
8.09.2007, 21:10:46
Nie wydaje mi się to możliwe.
Flaga CURLOPT_FILE jedynie przekierowuje wyjście z ekranu do pliku. Pamiętaj, że to co widzisz w przeglądarce to efekt jej działania nad kodem, który za pomocą curl'a przechwytujesz (czyli "źródłem strony").
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.