|
|
|
|
<?php
// Данные для mysql сервера
$dbhost = "localhost"; // Хост
$dbuser = "anton"; // Имя пользователя
$dbpass = "anton"; // Пароль
$dbname = "anton"; // Имя базы данных
$link = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname, $link);
for($i=1;$i<3;$i++){
$url = "http://www.liveinternet.ru/search/?q=&cr=4&p=1&d1=&m1=&y1=&d2=&m2=&y2=&un=&jn=&fun=&pg=".$i;
$tag_in = "<ul class=\"bloglist messagelist\">";
$tag_out= "<div class=\"pageslist\">";
$content = file_get_contents($url);
$position=strpos($content, $tag_in);
$content=substr($content, $position);
$position=strpos($content, $tag_out);
$content=substr($content,0, $position);
$content=strip_tags($content, "<a>");
preg_match_all("/<a href=\"(.*)\" target=\"_blank\" /",$content,$ahref);
$ahref[1]=str_replace("profile","rss",$ahref[1]);
$ahref[1]=array_unique($ahref[1]);
$count=count($ahref[1])-1;
for($i=0;$i<3;$i++){
$rsscontent = file_get_contents($ahref[1][$i]);
preg_match_all("/title>[^>]+>/",$rsscontent,$title);
preg_match_all("/description>[^>]+>/",$rsscontent,$description);
$count=count($title[1])-1;
/********как быть тут*******/
while($x=0;$x>10;$x++;){
echo "<h3>".substr($title[0][$x],13,-3)."</h3>";
echo "<p>".substr($description[0][$x],21,-3)."</p><br /><hr><br />";
}
/********как быть тут*******/
//print_r($title);
//print_r($description);
//$counter=count
//$date = date(Y.m.d);
//$query = "insert into anton values(0,'".$date."','story','title','url'); ";
//mysql_query($query, $link);
}
}
?>
|
скрипт парсит с поиска лайв интернет рсс ленты пользователей дальше парсит ленту пользователя и добавляет в бд название и описание новости (парсит только рсс дальше не уходит)
Вопрос /********как быть тут*******/
Какой код должен быть между этим блоком? | |
|
|
|
|
|
|
|
для: rafonets
(25.04.2011 в 21:16)
| | А чего хотите добиться этим блоком? | |
|
|
|
|
|
|
|
для: rafonets
(25.04.2011 в 21:16)
| | А чего хотите добиться этим блоком? | |
|
|
|
|
|
|
|
для: cheops
(25.04.2011 в 21:20)
| | Для начала хочу вывести все что межу <title> </title> & <description> </description>
Извините за неточность | |
|
|
|
|
|
|
|
для: rafonets
(25.04.2011 в 21:22)
| | Вот что смущает, ссылки вы извлекаете при помощи регулярных выражений preg_match_all(), а тэги <title> и <description> при помощи строковых функций. Может все извлечем при помощи регулярных выражений?
PS Если с их составлением возникнут сложности - поможем. | |
|
|
|
|
|
|
|
для: cheops
(25.04.2011 в 21:24)
| | Я понял что вы имеете ввиду
$count=count($ahref[1])-1;
for($i=0;$i<3;$i++){
$rsscontent = file_get_contents($ahref[1][$i]);
preg_match_all("/\<title(.*)\/",$rsscontent,$title);
preg_match_all("/\<description(.*)\/",$rsscontent,$description);
$count=count($title[1])-1;
Дальше вытаскивать через preg_match_all но там хранится массив а массив и рег. выражение у меня не работают
while($x=0;$x>10;$x++;){
echo "<h3>".substr($title[0][$x],13,-3)."</h3>";
echo "<p>".substr($description[0][$x],21,-3)."</p><br /><hr><br />";
} | |
|
|
|
|
|
|
|
для: cheops
(25.04.2011 в 21:24)
| | Может у меня просто рег выражение не правильное? | |
|
|
|
|
|
|
|
для: rafonets
(25.04.2011 в 22:00)
| | Да, выражения лучше подправить
/<title>(.+?)<\/title>/is
/<description>(.+?)<\/description>/is
|
| |
|
|
|
|
|
|
|
для: cheops
(25.04.2011 в 23:34)
| |
$count=count($ahref[1])-1;
for($i=0;$i<3;$i++){
$rsscontent = file_get_contents($ahref[1][$i]);
preg_match_all("/<title>(.+?)<\/title>/is",$rsscontent,$title);
preg_match_all("/<description>(.+?)<\/description>/is",$rsscontent,$description);
$count=count($title[1])-1;
print_r("<h3>".$title."</h3>");
print_r("<p>".$description."</p><br /><hr><br />");
|
Поставил ваше регулярное выражение перестало работать
Вот ошибка:
Array
Array
Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in Z:\home\anton\www\index.php on line 26
Array
Array
Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in Z:\home\anton\www\index.php on line 26
Array
Array
|
| |
|
|
|
|
|
|
|
для: rafonets
(26.04.2011 в 10:32)
| | Еще проблема в том что в
$ahref[1]
несколько массивов типо
array(
array[0]
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
)
дальше идет не array[1]
а
array(
array[0]
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
)
array(
array[0]
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
0 > url ;
)
массив я не правильно написал | |
|
|
|
|
|
|
|
для: rafonets
(26.04.2011 в 10:32)
| | Не работает потому, что $ahref[1][$i] является пустой строкой. Что это за элемент и откуда он берется? Лучше реализовать проверку значений этого массива, чтобы предотвратить возникновение таких ошибок в дальнейшем. | |
|
|
|
|
|
|
|
для: cheops
(26.04.2011 в 10:49)
| | в этой переменой сохраняются ссылки на rss ленты в массиве а как устроить проверку массива? | |
|
|
|
|
|
|
|
для: rafonets
(26.04.2011 в 10:57)
| | Перед строкой
$rsscontent = file_get_contents($ahref[1][$i]);
| поставьте следующую проверку
if(empty($ahref[1][$i])) continue;
| чтобы пропустить пустые строки.
PS Но вообще по уму лучше разобраться откуда они вообще появляются в массиве $ahref. | |
|
|
|
|
|
|
|
для: cheops
(26.04.2011 в 11:20)
| | появляются они из-за array_unique
когда он удаляет все одинаковые то там не остается массив с значениями
Array
(
[0] => http://www.liveinternet.ru/users/rss_yugopolis/rss/
[1] => http://www.liveinternet.ru/users/rss_loveplanet_rus/rss/
)
А массив с значениями
Array
(
[0] => http://www.liveinternet.ru/users/rss_yugopolis/rss/
[24] => http://www.liveinternet.ru/users/rss_loveplanet_rus/rss/
)
Дальше я подсчитываю в коде количество 2 штуки
и подставляю в $ahref[1][0 потом 1 а не 24]
ошибку нашел но как ее исправить не понял ( | |
|
|
|
|
|
|
|
для: rafonets
(26.04.2011 в 11:23)
| | Тогда, вместо цикла for, лучше использовать цикл foreach - он пройдет по всем элементам массива от начала до конца, не затрагивая пропущенные ключи. | |
|
|
|
|
|
|
|
для: cheops
(26.04.2011 в 11:27)
| | не for начал работать уже только теперь я не могу вывести следующее
if(empty($ahref[$i])) continue;
$rsscontent = file_get_contents($ahref[$i]);
Здесь все окей а вот ниже (((
preg_match_all("/<title>(.+?)<\/title>/is",$rsscontent,$title);
preg_match_all("/<link>(.+?)<\/link>/is",$rsscontent,$title);
preg_match_all("/<description>(.+?)<\/description>/is",$rsscontent,$description);
$count=count($title[1])-1;
for($i=0;$i<30;$i++){
print_r("<h3>".$title."</h3>");
print_r("<p>".$description."</p><br /><hr><br />");
|
| |
|
|
|
|
|
|
|
для: rafonets
(26.04.2011 в 11:23)
| | теперь я получаю то что надо )
но как обрезать title и description я пробую рег выражениями что вы мне дали только получаю array | |
|
|
|
|
|
|
|
для: rafonets
(26.04.2011 в 11:28)
| | Вот эти строки
print_r("<h3>".$title."</h3>");
print_r("<p>".$description."</p><br /><hr><br />");
| замените следующими
print_r("<h3>".$title[1]."</h3>");
print_r("<p>".$description[1]."</p><br /><hr><br />");
|
| |
|
|
|
|
|
|
|
для: cheops
(26.04.2011 в 11:30)
| |
<h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br /><h3>Array</h3><p>Array</p><br /><hr><br />
|
| |
|
|
|
|
|
|
|
для: rafonets
(26.04.2011 в 11:32)
| | Вообще-то результаты preg_match_all() следует обрабатывать в цикле, давайте изменим скрипт следующим образом
<?php
...
for($i = 0; $i < count($title[1]); $i++)
{
print_r("<h3>".$title[1][$i]."</h3>");
print_r("<p>".$description[1][$i]."</p><br /><hr><br />");
}
...
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.04.2011 в 11:35)
| | Благодарю пока все работает дальше буду программировать ) | |
|
|
|
|
|
|
|
для: cheops
(26.04.2011 в 11:35)
| | Еще одна просьба
какое регулярное ворожение нужно
http://www.liveinternet.ru/users/rss_yugopolis/post163377027/
/rss_yugopolis/ может быть любое число и все такое наверное так да
preg_match_all("\http://www.liveinternet.ru/users/(.*)/post[0-9]/\/")
Так? | |
|
|
|
|
|
|
|
для: rafonets
(26.04.2011 в 11:57)
| | А какие части хотите извлечь? Я бы стал отталкиваться от следующего регулярного выражения
<?php
$url = "http://www.liveinternet.ru/users/rss_yugopolis/post163377027/";
preg_match("|http://www.liveinternet.ru/users/([^/]+)/(post[0-9]+)/|", $url, $out);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.04.2011 в 12:02)
| | У меня выводиться все в таком виде
http://www.liveinternet.ru/users/rss_yugopolis/
Югополис | Новости Краснодара и Краснодарского края :: LiveInternet
rss_yugopolis
-----------------------------------------------------------------------
http://www.liveinternet.ru/users/rss_yugopolis/
41-летний, неоднократно судимый, мужчина подозревается в сексуальном надругательстве над 8-летней девочкой. http://www.yugopolis.ru/news/incidents/2011/04/26/16561
Югополис | Новости Краснодара и Краснодарского края
-----------------------------------------------------------------------
http://www.liveinternet.ru/users/rss_yugopolis/post163377028/
В Стамбуле завершился чемпионат Европы по дзюдо. Сборная России, которая была представлена здесь сильнейшим составом, завоевала восемь медалей. http://www.yugopolis.ru/news/sport/2011/04/26/16560
В Краснодарском крае задержан педофил
-----------------------------------------------------------------------
Надо эти ссылки вытащить и ихний html получить дальше через strip_tags оставить только текст и добавить в базу данных поле story вместе с description линк дальше не нужен title нужен | |
|
|
|
|
|
|
|
для: rafonets
(26.04.2011 в 12:12)
| | Тогда приведенное выше регулярное выражение должно подойти. | |
|
|
|