[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: обращение к другому сайту
Ramilphp
добрый вечер дорогие асы)
У меня такая проблема, хочу вытащить из википедии определённый участок(например текст между <p></p>).
Я так то раскидал небольшой граббер, но что то у меня не получается....
Вот код:


<?php
// получаем Web-страницу с новостью
// переменная $u содержит URL страницы

$u="http://ru.wikipedia.org/wiki/php";
$f=join('<BR>', file($u));
// начало новости
$begin=strpos(strtolower($f), "<p>", 0);
// конец новости
$end=strpos(strtolower($f), '</p>', $begin);
// вырезаем то, что нам нужно - текст новости
$txt=substr($f, $begin, $end-$begin);
// удаляем все теги, кроме <p> и <img>
$txt = strip_tags($txt, '<p><img>');
// выводим текст новости
echo $txt;
?>


но при тестировании выходит такая ошибка:

Warning: file(http://ru.wikipedia.org/wiki/php) [function.file]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\Program Files (x86)\VertrigoServ\www\1\index.php on line 6

Warning: join() [function.join]: Invalid arguments passed in C:\Program Files (x86)\VertrigoServ\www\1\index.php on line 6

Прошу вас поправить мой кривой код пожалуйста, заранее благодарен!:)
ЗЫ. Этот код пока что тестировал на винде, на убунте у меня курл не установлен...
killer8080
Цитата (Ramilphp @ 26.12.2012 - 21:23)
failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\Program Files (x86)\VertrigoServ\www\1\index.php on line 6

Ну так 403 ошибка же blink.gif
И file() тут как то не в тему, есть же file_get_contents(), да и парсить удобней регуляркой.
Ramilphp
Я вот тут изучил и попробовал так:
<?php
$url = "http://ru.wikipedia.org/wiki/php";
$unique_start = "<p>";
$unique_end = "</p>";
function weather($url, $unique_start, $unique_end) {
$code = file_get_contents($url);
preg_match('/'.preg_quote($unique_start,
'/').'(.*)'.preg_quote($unique_end, '/').'/Us', $code, $match);
return $match[1];
}
echo weather($url, $unique_start, $unique_end); ?>

но всё равно я вижу ошибку!
Warning: file_get_contents(http://ru.wikipedia.org/wiki/php) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\Program Files (x86)\VertrigoServ\www\1\index.php on line 6

Но если изменить адрес на адрес другого сайта то всё нормально, грабит на УРА!
Я думаю что то не так с википедией....можно ли обмануть как нибудь эту хрень?:)
Игорь_Vasinsky
курлом получай контент. тебя палят.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Ramilphp
Цитата (Игорь_Vasinsky @ 27.12.2012 - 15:39)
курлом получай контент. тебя палят.

Приведи пример пожалуйста....никак не могу догнать....
Ramilphp
Я всё немогу разобраться с курл, нету случайно ни у кого примера вывода текста между тегами с другого сайта с помощью курл?....
Игорь_Vasinsky
https://www.google.ru/search?q=%D1%8D%D0%BC...iw=1366&bih=610

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Ramilphp
хмммммммммммммм..........что то в этом есть, я гуглил конечно же, умею посылать запрос на сайт, научился узнавать ответ сервера, но вытащить определённый контент....
Игорь_Vasinsky
регулярные выражения php

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Ramilphp
Спасибо огромное!! ну вот другая проблема....я вытащил всю страницу...... как мне из этого массива вытащить текст между тегами <div>? Помогите пожалуйста доразобраться с этой проблемой...
Ramilphp
preg_match_all( '|<div id="bodyContent">(.*)</div>|sUS', $content, $matchesArr);
echo $matchesArr;

Почитав мануал, сбацал такой код....
но при echo $matchesArr[1]; на странице выходит только слово Array
Xes
$matchesArr[0][0];
Ramilphp
теперь выходит вообще пустая страница(((
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.