На страницу 1, 2 След. |
|
ram_by Свой |
Зарегистрирован: 23.12.2009
Сообщений: 16
|
Обратиться по нику
|
ram_by |
Ответить с цитатой | | |
|
Вторая моя статья на тему программирования. В ней даны теоритические данные о написании парсера/граббера на php. Это не самый лучший метод, но он имеет место существовать. В статье описаны функции и алгоритм написания. Статья написана полностью на основе собственного опыта.
парсер на php |
|
|
|
|
|
|
Cabal Гуру |
Зарегистрирован: 20.10.2007
Сообщений: 1360
|
Обратиться по нику
|
Cabal |
Ответить с цитатой | | |
|
-------В общем тут была критика лютобешенная--------
Убрал. Наверно я чего то не понял. Скорее всего это не код, а пример непонятного мне алгоритма изображенный схематично отсюда и кириллица в коде и странная идея с раскоментированием, когда можно просто выдрать из кода то что нужно как минимум тремя более вменяемыми способоми... Наверно я не понял цель и как следсвие смысл. Извиняюсь. Но что нибудь по PHP всё таки почитай. В частности по регуляркам. Потому что даже если это не понятая мной идея парсинга изложенная схемотично, а не код, в ней нет смысла ведь инструментов дофига. |
|
|
|
|
|
Cabal - патентованный зануда. |
ram_by Свой |
Зарегистрирован: 23.12.2009
Сообщений: 16
|
Обратиться по нику
|
ram_by |
Ответить с цитатой | | |
|
Во всяком случае это был один из способов)))
пс: толчок к регуляркам получен ))) |
|
|
|
|
|
|
Cabal Гуру |
Зарегистрирован: 20.10.2007
Сообщений: 1360
|
Обратиться по нику
|
Cabal |
Ответить с цитатой | | |
|
ram_by писал(а): |
Во всяком случае это был один из способов)))
|
Вирусного маркенга ломающего шаблон программистам? Наверно. |
|
|
|
|
|
Cabal - патентованный зануда. |
Sterx + Опытный |
Зарегистрирован: 08.10.2007
Сообщений: 252
|
Обратиться по нику
|
|
|
аккаунты адалт партнерок за 50% |
ram_by Свой |
Зарегистрирован: 23.12.2009
Сообщений: 16
|
Обратиться по нику
|
ram_by |
Ответить с цитатой | | |
|
Забываем про этот неудачный пример, завтра опубликую простую rss читалку на основе регулярных выражений... |
|
|
|
|
|
|
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21802
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
жесть.. какой же это парсер, если тама даже нет такой вот функции:
Код: |
function getlinksfromtext($t) { $ret = array(); preg_match_all('/<.*a.*href=\s*[\'"](.+)[\'"].*>.*<\/.*a.*>/iU', $t, /* пони коверкает сам себя */ $matches); for ($i=0; $i< count($matches[0]); $i++) { $ret[] = $matches[1][$i]; } return $ret; }
|
да и более то особо ничего ненадо, кстати
идея, взять страничку, выбрать ссылки (функция выше), определить след. стр по коду, или по стд. алгоритму, фильтровать & сохранить линки..
______
Cabal,
ты бы еще дописал:
"Я ж говорю что идея интересная" (c) Cabal |
|
|
|
|
|
porno |
zeoman V.I.P. |
Зарегистрирован: 19.03.2008
Сообщений: 3708
|
Обратиться по нику
|
|
|
|
ram_by Свой |
Зарегистрирован: 23.12.2009
Сообщений: 16
|
Обратиться по нику
|
ram_by |
Ответить с цитатой | | |
|
Да я как бэ и не учусь, давненько пишу, просто как-то руки не доходили до регулярок... Теперь дошли =)
Так что, что ни делается - всё к лучшему. |
|
|
|
|
|
|
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21802
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
забыл добавить..
вот на таких людях, как я и кабал.. и держиться тех часть знаний форума..
вообще, знаете почему Гитлер так легко захватил Европу и дальше?
потому что у него были новый разработки мощного оружия, и лучьшие наверно из США/СССР..
а это оружие, тоже самое что и технологии..
вот такие как я и кабал, и вносим на форум технологии..
Человек учится. Чего налетели?
вообще, учиться можно тихо..
тут не в этом дело,
с мнением кабала я согласен полностью..
а статья просто дает ложное понимание парсинга..
тама просто стандартные куски кода..
их наверно можно к много чему применять.. но для парсинга, это лишнее.. а как раз что должно быть, - нету
это просто обычный "макет", просто набор простых кусков, только из его материала/кусков сделать парсер - невозможно..
в программирование есть два вида работников,
это аналитик и сам программер..
я вот и тот и тот, т.к. и дал пример функции, + описал алгоритм:
идея, взять страничку, выбрать ссылки (функция выше), определить след. стр по коду, или по стд. алгоритму, фильтровать & сохранить линки..
- он несложнее этих строк, и даже в реализации также легок,
могу дать, кому надо.. свой недоделанный пхп скрипт, парсинга практически любой СЕ..
по алгоритму приведенным мной выше..
мой: юзает курл, т.е. эмулировать кого угодно (человека а не бота) умеет..
работает по "стд. алгоритму", т.е. след. линк неберет с стр. серпа, а вычисляет со смещением +100 (по стд. алгоритму) .. и снова забирает сорц, фильтровать & сохранить линки
парсить какую угодно СЕ может, лижбы была четкая пони насчет "стд. алгоритму - заранее узнаваемый линк след. серп станицы"..
реф. также соблюдает, текущая стр. серпа, как след. реф линк на след. запрос, (первая как - МЕИН СЕ).. ясно думаю, да..
вообще он недоделан но базовые функции могу передать.. |
|
|
|
|
|
porno |
Cabal Гуру |
Зарегистрирован: 20.10.2007
Сообщений: 1360
|
Обратиться по нику
|
Cabal |
Ответить с цитатой | | |
|
IseeDeadPeople писал(а): |
Cabal,
ты бы еще дописал:
"Я ж говорю что идея интересная" (c) Cabal
|
Не. Моей терпимости хватило только на то чтобы предположить что это я чего то не понимаю, а не ТС показывает нам быдлокод в десять в тридцать четвёртой степени. |
|
|
|
|
|
Cabal - патентованный зануда. |
Gaseo Свой |
Зарегистрирован: 26.12.2009
Сообщений: 21
|
Обратиться по нику
|
Gaseo |
Ответить с цитатой | | |
|
Да уж, это не парсер, а из серии "как бы еще поизвращаться" не в обиду ТС...
кстати, любителям регулярок скажу, что не всегда их использование целесообразно, так как в некоторых случаях они увеличивают время обработки... |
|
|
|
|
|
GameAgregator.com - пришло время зарабатывать на гемблинге! |
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21802
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
так как в некоторых случаях они увеличивают время обработки...
игогошка, любый кусок кода на этапе интерпретации увеличивает время обработки,
на самом деле, недумаю что именно рег. выры. уж значительно (заметно) увеличивают время интерпретации кода в машинный код, если оно не в несколько килобайт само рег. выражение..
а само исполнение, конечно ресурсоемко,
т.к. это как мин. сложный поиск, копирование, замена какие то частей текста, может и в 10Мб текста..
есть напр возможность произвести выбор линков из текста, напр. так:
Код: |
function Return_Substrings($text, $sopener, $scloser) {
$result = array();
$noresult = substr_count($text, $sopener);
$ncresult = substr_count($text, $scloser);
if ($noresult < $ncresult) { $nresult = $noresult; } else { $nresult = $ncresult; }
unset($noresult);
unset($ncresult);
for ($i=0;$i<$nresult;$i++) {
$pos = strpos($text, $sopener) + strlen($sopener);
$text = substr($text, $pos, strlen($text));
$pos = strpos($text, $scloser);
$result[] = substr($text, 0, $pos);
$text = substr($text, $pos + strlen($scloser), strlen($text));
}
return $result;
}
$string = '<a href="1">1</a> <a href="3">1</a> <a href="2">1</a> ';
$result = Return_Substrings($string, "<a href=\"", "\">");
echo implode(" AND ", $result);
(проверено, работает)
|
но думаю это по ресурсам равнозначно коду с рег. выр.:
Код: |
function getlinksfromtext($t) { $ret = array(); preg_match_all('/<.*a.*href=\s*[\'"](.+&
#41;[\'"].*>.*<\/.*a.*>/iU', $t, /* пони коверкает сам себя */ $matches); for ($i=0; $i< count($matches[0]); $i++) { $ret[] = $matches[1][$i]; } return $ret; }
|
хотябы потому что, действие то совершаеться тоже, и регулярки именно для таких работ и созданы.. и есть еще правило вроде, чем короче код, тем он эффективнее.. (эффективнее еще конечно не значит, менее требовательный к ресурсам, но фсё же..)
в любом случаи, смотря на функции Return_Substrings и моё рег. выр. надо понимать, что в машинном коде, это приблизительно равнозначно будет.. ф. Return_Substrings - как бы я наз. "в тупую сделать что то".. на самом деле, как вы по ней видите, она несодержит никаких сложных рег. выр., зато насыщены простыми но большими по обьему-коду операциями, более простых, т.е. это считай разложенный многочлен на простые составные (как там в математике).. и вызов регулярки, по идее, на более низких уровнях.. приводит к многочисленным, тем же самым вызовам функции, выполнениям операций, как напр. в той же ф. Return_Substrings
_______
может ф. с моим рег. выр. выборки линков будет и более ресурсоемко, но только из за того что делает более интеллектуальную выборку, во всех вариациях одинарных, двойных квч. с пробелами внутри, новыми строками, табуляциями.. и т.д. |
|
|
|
|
|
porno |
Gaseo Свой |
Зарегистрирован: 26.12.2009
Сообщений: 21
|
Обратиться по нику
|
Gaseo |
Ответить с цитатой | | |
|
IseeDeadPeople писал(а): |
так как в некоторых случаях они увеличивают время обработки...
игогошка, любый кусок кода на этапе интерпретации увеличивает время обработки,.....
|
В твоем примере да, но я имел ввиду, что для простых задач удобнее использовать тот же explode и т.д...
Потому как есть пишут регулярку вместо strtolower (пример из жизни) |
|
|
|
|
|
|
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21802
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
Gaseo, ну эксплод/имплод помоему у него основная и единственная функция разбивка склеивания строки на массив по символу.. (имплод, наоборот склейка по символу массива в строку)
типа:
$bukvi = explode(" ", "a b c");
думаю даже что то сложнее, работу с текстом, не то что выборку линков из хтмл-сорца, им несделаешь.. теоретически можно наверно, типа сначало разбить по href, потом по "> .. потом проходить все элементы и каждый сравнивать по обычному сравнению строк ==
но в регулярке, все будет короче в раз 50 наверно по обьему кода
ну а если надо опустить все символы, а потом пустить по кругу.. именно для этой единственной операции и создана strtolower,
думаю любой знает (кто хоть чуть игогокал пхп) о существовании strtolower, и небудет для таких операций делать регулярки, ведь они сложнее явно.. и это единственная причина, по которым их неюзают, когда надо..
чтоб их самому писать правильно, это вообще надо как мин. математику знать, и голова должна хорошо соображать.. особенно если смотреть пример выше с выбором линков..
и когда я изучал их, всегда замечал, что голова начинает хорошо работать после изучения подобного, и после того.. т.е. это даже полезно и в быту, в них разбираться .. |
|
|
|
|
|
porno |
|
|
Партнеры
|