Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > как сграбить код странички?


Автор: p2087 16.10.2005, 23:06
нашёл в инете такой вот код
Код

<?php 
$GrabURL = "http://www.rimkanikuly.ru/r_t_menu.html"; 
$GrabStart = "<html>"; 
$GrabEnd = "</html>"; 


$OpenFile = fopen("$GrabURL", "r"); 
$RetrieveFile = fread($OpenFile, 200000); 

$GrabData = eregi("$GrabStart(.*)$GrabEnd", $RetrieveFile, $DataPrint); 
// $DataPrint[1] = str_replace("", "", $DataPrint[1]); //- Un-Comment This Line for "Replace" purposes! 
// $DataPrint[1] = str_replace("", "", $DataPrint[1]); //- Un-Comment This Line for "Replace" purposes! 
fclose($OpenFile); 

echo $DataPrint[1]; 



?> 

но чего-то он неработает smile
подскажите как можно сграбить страницу(или её часть). smile

Автор: sergejzr 16.10.2005, 23:15
Первый вопрос, зачем тебе это действие? Грабить чужие странички нехорошо!

Автор: PARROT 16.10.2005, 23:19
Код

$cnt=file_get_contents("http://carnevale.ru/");
$pos1=strpos($cnt,"Мы хотим");
$pos2=strpos($cnt,"в интернет-магазине");
$out=substr($cnt,$pos1,$pos2-$pos1);
$out=str_replace(' src="',' src="http://carnevale.ru',$out);
echo $out;

Автор: p2087 17.10.2005, 07:54
Цитата(PARROT @ 16.10.2005, 23:19)
Код

$cnt=file_get_contents("http://carnevale.ru/");
$pos1=strpos($cnt,"Мы хотим");
$pos2=strpos($cnt,"в интернет-магазине");
$out=substr($cnt,$pos1,$pos2-$pos1);
$out=str_replace(' src="',' src="http://carnevale.ru',$out);
echo $out;

спасибо!вроде работает но... почему то грабит много ненужного ещё непонятно почему smile
я выделяю грагицы грабления (допустим какойто текст с какогото сайта) он выводит этот текс(так как я и хотел) но потом ещё какойто кусок сайта снизу этого некста(который я не хотел) smile

Автор: -=Ustas=- 17.10.2005, 08:23
Лучше выдирай нужный тебе кусок регулярками.

Автор: Wolf1994 17.10.2005, 11:44
Может так:
Код

$cnt=file_get_contents("http://carnevale.ru/");
$pos1=strpos($cnt,"Мы хотим");
$pos2=strpos($cnt,"в интернет-магазине");
$out=substr($cnt,$pos1+strlen ("Мы хотим"),$pos2-$pos1-strlen ("Мы хотим"));
echo $out;

?
Просто надо определиться со смещениями, для конкретного случая.

Автор: p2087 17.10.2005, 15:15
Цитата
Лучше выдирай нужный тебе кусок регулярками.

дай пример плз

Автор: -=Ustas=- 17.10.2005, 15:26
Дай код всей html-странички, из которой ты забираешь текст.

Автор: Mal Hack 17.10.2005, 15:37
Работать надо через fsockopen хотя бы !!!

Автор: p2087 17.10.2005, 15:45
хм вроде заработало. видимо с первый сатом с которым я пробовал неполучалось потомучто там ошибки в коде были наверное.
ща вроде всё работает.
а если на странице несколько раз повторяеться текст например таблица с названиями полей ИМЯ, ТЕЛЕФОН...если так грабить то грабиться только первая ячейка таблицы ...нужно это всё както в цикл запихнуть???

Автор: p2087 17.10.2005, 16:11
Цитата(Mal @ 17.10.2005, 15:37)
Работать надо через fsockopen хотя бы !!!

дай пару ссылок на стратьи на эту тему а то кроме того как сделать whois ip ничего не нашёл smile

Автор: -=Ustas=- 17.10.2005, 16:19
http://php.net/fsockopen

Автор: Wolf1994 17.10.2005, 20:12
А чем плохи файловые функции? А то, я пробовал как-то через сокеты делать, по-написанному (php.net), так толком ничего и не заработало smile

Автор: Mal Hack 17.10.2005, 20:15
Цитата(Wolf1994 @ 17.10.2005, 21:12)
А чем плохи файловые функции?

Их работа с УРЛами зависит от определенной конфигурации, которая на многих хостерах не та, которая позволяет это делать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)