PDA

Просмотр полной версии : Парсер на javascript


di_sl
31.01.2010, 09:36
Приветствую всех!
Ищу скрипт парсера на JavaScript, в гугл не шлите, только от туда) всю ночь гуглил, результат ноль.

Нашел на php
<?
/* получаем содержимое нужной нам страницы в переменную $content (обратите внимание, - мы используем для этого функцию file_get_contents. Она может работать с удаленными URL только если в настройках PHP установлена опция allow_url_fopen) */
$content = file_get_contents("http://www.site.ru");

// Определяем позицию строки, до которой нужно все отрезать (используем функцию strpos()).
$pos = strpos($content, "Начало блока");

/*Отрезаем все, что идет до нужной нам позиции (функция substr в данном случае принимает два параметра: строка для обработки и //номер позиции. Функция вернет строку, НАЧИНАЯ с указанной позиции) */
$content = substr($content, $pos);

// Точно таким же образом находим позицию второй строки
$pos = strpos($content, "Конец блока");

// Отрезаем нужное количество символов от нулевого
$content = substr($content, 0, $pos);

// выводим полученную строку.
echo $content

?>
В принципе то что нужно для моей задумки, но не подходит php. Может завалялось у кого похожее на этот скрипт но только на JavaScript ?
Заранее премного благодарен.

pumbo
31.01.2010, 17:11
Насколько мне известно, парсер на JS не получится.
Получить содержимое чужой (не со своего сайта) страницы через ajax нельзя (поправьте, если ошибаюсь).

WNZRS
31.01.2010, 17:42
Можно получить содержимое чужой страницы через фреймы

Deathdreams
31.01.2010, 17:45
Насколько мне известно, парсер на JS не получится.
Получить содержимое чужой (не со своего сайта) страницы через ajax нельзя (поправьте, если ошибаюсь).
Поправлю, можно.

Но парсер написать нереально, т.к. в запросе нельзя даже получить header .

di_sl
01.02.2010, 01:02
Понятно, оч жаль :( ну ладно, буду искать другие выходы...
Спасибо всем!

Isis
01.02.2010, 01:03
А аяксом?)

di_sl
01.02.2010, 01:50
Я нашел другой выход, но есть опять проблема :D для тех кто знает php эта не проблема, поэтому надеюсь на поддержку.

Вот смотрите, часть того кода что я выложил выше
// выводим полученную строку.
echo $content
Как сделать чтоб он не выводил на ружу то что нашел? а подставлял в строку внутри скрипта. Я попробывал использовать
<?=$content?>
Всё вроде катит, в строку в коде подставляет то что нашел. Но не магу понять как убрать то что он выводит) если оставляю так
// выводим полученную строку.
echo
Вылетает ошибка :D хотя в этом скрипте есть
<?=$content?>
Для подставки найденного внутри скрипта) С php не селен, полностью нулевое знание :D поэтому обяснил как смог, думаю понятно что я имел ввиду.

Вот я олень!!! :D решение проблемы куда проще
// выводим полученную строку.
//echo $content
Нужно было за комментировать выход и всё)) вообщем разобрался...

b3
01.02.2010, 04:19
Зачем коментировать вывод если его можно вообще не делать? =)

Fepsis
01.02.2010, 04:40
:D решение проблемы куда проще
// выводим полученную строку.
//echo $content
Нужно было за комментировать выход и всё)) вообщем разобрался...

Рассмешил.. :D :D :D

di_sl
01.02.2010, 15:19
Рассмешил.. :D :D :D
Новичок я :D
Тут ещё одна проблема, запускаю парсер на локалке (на денвере), парсер работает на ура, заливаю его на хостинг и там болт :D т.е он парсит, но инфа выходит одна и таже. К примеру мне нужны циферки между <p> и </p> циферки меняются при каждом заходе на сайт. Когда я запускаю парсер он мне выдает одни и те же цифры) а на локалке всё нормально, при каждом запуске новые циферки.

Кстати на хостинге стоит другой парсер, но он работает с другим ресурсом и проблем у него нет (тфу, тфу, тфу). Теперь я понять не могу почему вылезает одна и та же инфа... может прикол админа? кстати я и через curl пробовал и через ..уюл :D одно и тоже.

SQLHACK
01.02.2010, 15:27
смерть мозга
>>К примеру мне нужны циферки между <p> и </p>

если у тя на странице только 1 такая конструкция, то резальтат будет в переменной $match[1]

<?php

$content = file_get_contents("http://ssss.com/sssss");
preg_match("#<p>\s*(\d+)\s*<\/p>#i", $content, $match);
echo $match[1];

?>


а, если много то они будут в массиве $match[1]


<?php

$content = file_get_contents("http://ssss.com/sssss");
preg_match_all("#<p>\s*(\d+)\s*<\/p>#i", $content, $match);
var_dump($match[1]);

?>

b3
01.02.2010, 17:25
Я подозреваю что речь идет о кэшировании.

deedoc
01.02.2010, 17:50
Почему отказались от JS? Ведь вполне можно динамически открыть окно и получить всё, что в нем есть в качестве проперти. Это в роли концепции, если нужно, можно покурить в эту сторону.