Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сграбить часть содержимого страницы 
:(
    Опции темы
Aliance
Дата 13.5.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Доброго времени суток. Задача такая:

с помощью cURL, sockets, fopen, file_get_contents (или любым другим способом) получить содержимое страницы и выдезать только часть между:
Код

<!-- Begin of text -->
................
................
................
<!-- End of text -->


И далее работать с этим текстом.
Как это осуществить и чем лучше? Их вышеперечисленного не работал ниразу с cURL, но говорят они лидеры в этом :-)
Что посоветуете? 
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 13.5.2006, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Цитата(Aliance @  13.5.2006,  18:51 Найти цитируемый пост)
fopen, file_get_contents (или любым другим способом)

Это сразу выкинь.
fsockopen для начала. В поискепоюзай.
 
PM ICQ   Вверх
Aliance
Дата 13.5.2006, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Ну с ними умею. А вот с cURLами не работал. Советуешь для данной задачи что использовать?
Я могу сокетами получить содержимое всей страницы, а как только ее часть, подскажи плз ) 
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 13.5.2006, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Цитата(Aliance @  13.5.2006,  20:17 Найти цитируемый пост)
Я могу сокетами получить содержимое всей страницы, а как только ее часть, подскажи плз )  

Считав все выцепить нужное.
Выцепить можно и через DOM, но это не надежно, т.к. скорее всего код не стандартизирован. 
PM ICQ   Вверх
Aliance
Дата 13.5.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Цитата(Mal Hack @  13.5.2006,  21:41 Найти цитируемый пост)
Выцепить можно и через DOM, но это не надежно, т.к. скорее всего код не стандартизирован.  

Да, он не стандартизирован.
Единственное что абсолютно точно - нужный мне кусок находится между комментариями, которые я привел в первом посту. Так как мне их выцепить-то? 
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 13.5.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Регулярками smile 
PM ICQ   Вверх
Aliance
Дата 13.5.2006, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Да это понятно, но не выходит у меня. Вот что пишу, но явно что бред...

Код

<?php

$mas= array();

$text = <<<EOS
<!-- Begin of text -->
TEST===TEST===TEST===TEST
<!-- End of text -->
EOS;

$text = preg_grep("/^.*[<!-- Begin of text -->].+[<!-- End of text -->].*$/", $mas);

print_r($mas);

?>


В общем мне нужно получить это: TEST===TEST===TEST===TEST  

Это сообщение отредактировал(а) Aliance - 13.5.2006, 21:44
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 13.5.2006, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Код
<pre>
<?php
$mas= array();
$text = <<<EOS
<!-- Begin of text -->
TEST===TEST===TEST===TEST
<!-- End of text -->
EOS;
//!--\sEnd\sof\stext\s\-\->
$text = preg_match_all("#<\!\-\-\sBegin\sof\stext\s\-\->(.+?)<\!\-\-\sEnd\sof\stext\s\-\->#s",$text, $mas);
print_r($mas);
?>
 
PM ICQ   Вверх
Aliance
Дата 13.5.2006, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Спасибо, помогло. А реально ли усовершенствовать это так:
возьмем переменную $mas[0][0] и сделаем такую вещь:
Код

$new_mas = explode("<br />", $mas[0][0]);


Далее берем первый элемент - $new_mas[0], его текст таков:
Цитата

<table width="95%"  border="0" align="center" cellpadding="3" cellspacing="0" class="inup3">
<tr>
<td width="100%">
<A HREF="ссылка1" target=_blank>название</A>
<IMG SRC="картинка1" WIDTH=12 HEIGHT=15>  (Значение1: само_значение1) <BR>
<b>значение2: само_значение2</b><BR>
значение3: само_значение3</FONT><BR>
<B>текст1:</B><BR>значение4<BR>
<B>текст2:</B><BR>значение5<BR>    
<B>текст3:</B><BR>значение6<BR>    
</td>
<td align="center" valign="top" style='padding: 0,2,0,5'>
<a href="ссылка1"><SPAN style='background-color: #E0E0E0'><img src="картинка1" alt="значение7" name="image" border="0"></SPAN></a></td>
</tr>
</table>


И нужно получить все выделенные фрагменты. Тут я вообще сомневаюсь, что такое возможно.
Текст большой (я все пробелы и табуляцию удалил, их полно перед строчками), регулярками наверное никак... 
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 13.5.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Можно вычленить и такое.
Только тут лучше будет текст целиком прогнать, как есть.
При этом, важно чтобы код HTML был хотя бы валидным с точки зрения синтаксиса.
Когда я писал подцветку, я все то сделал.
Тут несколько попроще... 
Код
<?php

$text = <<<EOS
<table width="95%"  border="0" align="center" cellpadding="3" cellspacing="0" class="inup3">
<tr>
<td width="100%">
<A HREF="ссылка1" target=_blank>название</A>
<IMG SRC="картинка1" WIDTH=12 HEIGHT=15>  (Значение1: само_значение1) <BR>
<b>значение2: само_значение2</b><BR>
значение3: само_значение3</FONT><BR>
<B>текст1:</B><BR>значение4<BR>
<B>текст2:</B><BR>значение5<BR>    
<B>текст3:</B><BR>значение6<BR>    
</td>
<td align="center" valign="top" style='padding: 0,2,0,5'>
<a href="ссылка1"><SPAN style='background-color: #E0E0E0'><img src="картинка1" alt="значение7" name="image" border="0"></SPAN></a></td>
</tr>
</table>
EOS;
//<(?:a|img)\s(?:.*?)    (.*?)>
//print $text = str_replace( "\"" , "\&quot;" , $text );
//preg_match_all( "#(?:src|alt)=(\"|\')(.+?)\\1#is" , $text , $match );
preg_match_all( "#<(?:a|img)?\s(?:.*?)(?:(?:src|alt|href)=(\"|\')(.+?)\\1)(?:.*?)>#ise" , $text , $match );

print_r( $match );

?>


А вот значения, уже так просто не получится... Тут уже надо конкретизировать как-то. 
PM ICQ   Вверх
Aliance
Дата 13.5.2006, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



А уточнять нечего smile Дан такой текст, он на чужом домене. Мне он нужен, чтобы не вбивать его ручками (текста очень много, а главное он меняеться...а я планирую крон сделать)
Вот, единственное что менется - это выделенные слова. Их-то мне и нужно заполучить.
Есть много тсраниц, на каждой от 0 до бесконечности таких блоков. Я планировал циклом прокрутить, получить все эти слова и забить в БД свою, выполнять скрипт кроном.
Впринципе сейчас с твоей помощью у меня сам этот текст есть, но если я его так буду вставлять на страницу - то это никак не подойдет под мой дизайн. Хотелось бы иметь отдельные необходимые слова.

Очень нужна это вещь, просто без нее не пишется ничего другое, т.к. на этом все основано smile

Добавлено @ 23:06 
Может по строчкам просто рзбивать сперва? 
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 13.5.2006, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Aliance, дай линк откуда надо стырить. В принципе все можно сделать. 
PM ICQ   Вверх
Aliance
Дата 14.5.2006, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Дык линков много. Могу дать парочку, поймешь думаю закономерность :-)

http://capitalcity.combats.ru/encicl/crutch.html
http://capitalcity.combats.ru/encicl/shirt.html

Делаю энциклопедию предметов из этой игры. Т.к. предметы изменяються/добавляются + их очень много - в ручную заносить в БД - это непосильная работа. 
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 14.5.2006, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Код

<?php

$text = strip_tags( $text );
preg_match_all( "#:(.+?)$#i" , $text , $matches );
// Может перед : надо будет \ поставить.

?> 
 

Это сообщение отредактировал(а) Mal Hack - 14.5.2006, 01:54
PM ICQ   Вверх
Aliance
Дата 14.5.2006, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Пустой массив получается smile

Код

<?php

$text = <<<EOS
<table width="95%"  border="0" align="center" cellpadding="3" cellspacing="0" class="inup3">
<tr>
<td width="100%">
<A HREF="ссылка1" target=_blank>название</A>
<IMG SRC="картинка1" WIDTH=12 HEIGHT=15>  (Значение1: само_значение1) <BR>
<b>значение2: само_значение2</b><BR>
значение3: само_значение3</FONT><BR>
<B>текст1:</B><BR>значение4<BR>
<B>текст2:</B><BR>значение5<BR>    
<B>текст3:</B><BR>значение6<BR>    
</td>
<td align="center" valign="top" style='padding: 0,2,0,5'>
<a href="ссылка1"><SPAN style='background-color: #E0E0E0'><img src="картинка1" alt="значение7" name="image" border="0"></SPAN></a></td>
</tr>
</table>
EOS;

$text = strip_tags( $text );
preg_match_all( "#:(.+?)$#i" , $text , $match );
// preg_match_all( "#\:(.+?)$#i" , $text , $match );

print("<pre>");
print_r( $match );
print("</pre>");

?>
 
PM MAIL WWW ICQ Skype   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0903 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.