Подскажите пожалуйста как правильно парсить HTML страницы.
Я делал так: получал содержимое сайта при помощи функции file_get_content(), а потом строковыми функциями разбирал содержимое на части и получал нужную информацию.
Когда я попробовал парсить страницу содержащую RSS ленты, ничего не получилось.
Пробовал использовать реглярные выражения, но они работают очень медленно...
Спустя 54 минуты, 51 секунда (6.08.2010 - 19:19) dao-yan написал(а):
Спустя 55 минут, 52 секунды (6.08.2010 - 20:15) RomanBV написал(а):
Спасибо.
dao-yan скажи пожалуйста почему когда я сохраняю HTML страницу у себя на компьютере, открываю её блокнотом и вижу обычные HTML теги. Никаких лент RSS я не нахожу, хотя значки на сайте есть. Я не могу увидеть структуру ленты.
dao-yan скажи пожалуйста почему когда я сохраняю HTML страницу у себя на компьютере, открываю её блокнотом и вижу обычные HTML теги. Никаких лент RSS я не нахожу, хотя значки на сайте есть. Я не могу увидеть структуру ленты.
Спустя 46 минут, 12 секунд (6.08.2010 - 21:01) dao-yan написал(а):
Современные браузеры умеют расшифровывать RSS ленты и поэтому ты сохраняешь уже готовую HTML страницу, для эксперимента ссылку на RSS засунь в Download Master или ещё в какую нибудь программу для закачек файлов.
Спустя 12 минут, 51 секунда (6.08.2010 - 21:14) RomanBV написал(а):
И это понятно .
dao-yan а скажи пожалуйста почему не получается сохранить содержимое с помощью функции $content = file_get_content("www.rambler.ru"); а потом разобрать все по строкам. Строковые функцииstr_pos() не находят тегов. А если предварительно сохранить страницу на компе, то все получается? Говорят нужно использовать регулярные выражения, но в таком случае все работает очень медленно...
А как посмотреть структуру RSS, чтобы парсер написать?
(заранее благодарен).
dao-yan а скажи пожалуйста почему не получается сохранить содержимое с помощью функции $content = file_get_content("www.rambler.ru"); а потом разобрать все по строкам. Строковые функции
А как посмотреть структуру RSS, чтобы парсер написать?
(заранее благодарен).
Спустя 24 минуты, 45 секунд (6.08.2010 - 21:39) dao-yan написал(а):
Я для парсинга использую explode(), хорошо конечно регулярные выражения, но я их не знаю.
Пример здесь
А как посмотреть структуру RSS, чтобы парсер написать?
p.s. Функции file_get_content не существует, только file_get_contents
Пример здесь
А как посмотреть структуру RSS, чтобы парсер написать?
header("Content-type: application/text");
header("Content-Disposition: attachment; filename=rss.txt");
$content = file_get_contents("RSS АДРЕС");
echo $content;
p.s. Функции file_get_content не существует, только file_get_contents
Спустя 1 час, 31 минута, 48 секунд (6.08.2010 - 23:11) RomanBV написал(а):
Да, извини перепутал file_get_contents()! Я пробовал функция explode() не разделяет по тегам если на сайте есть ленты RSS... или я неправильно что-то делаю?
<?php
$content = file_get_contents("http://www.yadro.ws/index.php/vmchk/Notebooks/ACER/View-all-products.html");
$content = explode('<TD>', $content);
echo count($content)."<br>"; //показывает что в массиве 1 эл.
for ($i=0; $i < count($content); $i++)
echo htmlspecialchars($content[$i])."<br><br><br>"
?>
<?php
$content = file_get_contents("http://www.yadro.ws/index.php/vmchk/Notebooks/ACER/View-all-products.html");
$content = explode('<TD>', $content);
echo count($content)."<br>"; //показывает что в массиве 1 эл.
for ($i=0; $i < count($content); $i++)
echo htmlspecialchars($content[$i])."<br><br><br>"
?>
Спустя 54 минуты, 31 секунда (7.08.2010 - 00:05) dao-yan написал(а):
Скрипт работает правильно. Просто в этой HTML странице нет ни одного тега <TD>.
В ней есть только теги <td>, эта функция чувствительна к регистру.
Вот так будет работать лучше.
<?php
$content = file_get_contents("http://www.yadro.ws/index.php/vmchk/Notebooks/ACER/View-all-products.html");
$content = explode('<td>', strtolower($content));
echo count($content)."<br>"; //показывает что в массиве 1 эл.
for ($i=0; $i < count($content); $i++)
echo htmlspecialchars($content[$i])."<br><br><br>"
?>
Так как парсинг это не просто вывод текста на страницу, кешируй все данные.
Тем более что сайт www(точка)yadro(точка)ws работает жутко медленно.
В ней есть только теги <td>, эта функция чувствительна к регистру.
Вот так будет работать лучше.
<?php
$content = file_get_contents("http://www.yadro.ws/index.php/vmchk/Notebooks/ACER/View-all-products.html");
$content = explode('<td>', strtolower($content));
echo count($content)."<br>"; //показывает что в массиве 1 эл.
for ($i=0; $i < count($content); $i++)
echo htmlspecialchars($content[$i])."<br><br><br>"
?>
Так как парсинг это не просто вывод текста на страницу, кешируй все данные.
Тем более что сайт www(точка)yadro(точка)ws работает жутко медленно.
Спустя 11 минут, 36 секунд (7.08.2010 - 00:17) RomanBV написал(а):
Спасибо большое! Это скрипт-тест, поэтому я и вывожу данные сразу на экран...
Попробую разобраться.
Попробую разобраться.
Спустя 9 дней, 10 часов, 54 минуты, 5 секунд (16.08.2010 - 11:11) Walz написал(а):
Если хотите распарсить RSS, лучше использовать стандартный XML парсер: xml_parser_create() и т.д.
Спустя 43 минуты, 22 секунды (16.08.2010 - 11:54) linker написал(а):