![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
первая страница в любом случае берется тем более что это не столь важно что там в title и keyword. по поводу трафика я уже съел его весь ![]() nitr да виласипет ну и что ![]() грабер - сделал но кривовато вот JAPH (Just another perl hacker) и подключился - может ему самому интересно Это сообщение отредактировал(а) trigger - 21.1.2007, 22:23 |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: 3 Всего: 23 |
=for offtop
nitr, ну предложите не велосипед. За что народ ни берётся - всё уже сделано до нас. Так всякую охоту что-либо делать отобьёте. Кроме того, то, что написано собственноручно, просто и понятно. А вот попробуйте растолковать, что да зачем в этих модулях делается? Вот меня интересует вопрос - как DBI.PM умудряется обмениваться данными с MySQL, где конкретно это происходит? (Может, создать отдельную тему, расскажете?) trigger, it's really interesting. Всё жду, когда предложите, что делать с параметрами. Так и оставить, пусть бегает по всевозможным ссылкам? Или ограничиться одной такой? Была бы возможность просто стащить исходный код такого скрипта, да вот только не получится. |
|||
|
||||
nitr |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
JAPH, dbi.perl.org, а работает он по средствам "драйверов" (DBD).
Открой модуль - прочти ![]() Я ж не против того чем вы заняты. Это совет! Думаю неплохой ;) Добавлено @ 23:25
Не хорошо думаете ;) Просто я прочёл про перекрестные ссылки у вас выше ![]() з.ы.: Не буду более вам мешать. моё дело посоветовать решение проблемы (в случае ссылок), ну а ваше... |
||||
|
|||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Вот как много написали...
![]() Читаю и удивляюсь.... Я думал это так, для изучения возможностей и собственного образования занимаетесь, а вы просто CPAN боитесь ![]() Если нет способности, или желания разобраться что делает чужой модуль то вы так и будет поделки на коленке клепать... Хотя спрос и на такие поделки есть, точно знаю... Но по крайней мере глупо игнорировать миллионы человеко-часов потраченные на разработку модулей... Когда у вас будет серьезный проект для которого необходимо будет решение целой кучи задач очень разных, то написание всего на pure Perl, без использования модулей отобъет у заказчика желание дожидаться результата ![]() Кстати а зачем вы испльзуете LWP? почему не работаете на прямую с сокетами? Я вот знаю nitr этим страдает ![]() А в вашем случае я бы забил на правильное извлечение адресов, и воспользовался бы одним из приведенных модулей, а больше бы сосредоточился на правильной структуре приложения и алгоритму прохода по этим ссылкам... чтобы таки не было цикличности и т.д. -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Именно, да и ещё занимаются продвижением смоих модулей, поддержкой. И есть люди помогающие им и т.п. Извините, если посчитали оффтопом.
Да, но к сожалению. В принципе можно использовать HTTP::Response, HTTP::Request и URI::* В таких случаях я пиши своё. Ну или так называемые надработки ![]() З.Ы.: Всё на это мой совет исчерпан ![]() |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: 3 Всего: 23 |
Nab, я, конечно, согласен, что игнорировать CPAN не стоит, но это когда действительно нужно будет сделать нечто ограниченное по времени. А пока программирование есть хобби, имхо можно и позаниматься "велостроительством".
|
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
![]() 1.если знать только модули (не спорю нужны) а не знать как работает - далеко уйдем ? 2. никто ничего не продвигает сдесь
может стоит обидется ? 3. советы дельные спасибо конечно вот истина не думаю что ктото из вас не начинал делать велосипеды - а только через месяц нашли модуль который решает нужную задачу. Былобы великодушно с Вашей стороны уважаемые критики (осмелюсь назвать вас ГУРУ) подсказать стоящий с вашей точки зрения алгоритм(ы) и методы его осуществления. если взять алгоритм который я брал вначале - то я не думаю что он не имеет права на существование - он достаточно прост и экономен, а вот методы которые я выбрал - действительно кривые такчто слушаим Вас..... ![]() JAPH не понимаю зачем это нужно можно в цикле проходить каждый сайт по очереди и каждый раз заносить первую страницу незачем ругается сюда на синтакс SQL при заносе контента $sth -> execute($req -> content(), $req -> base(), $id) я еще так не тестил сирозно но скрипт отваливается - сори нет времени пока посмотреть - понедельниг оказался тижолым |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: 3 Всего: 23 |
Господи... trigger, расставьте хоть точки в конце каждой мысли! Я так и не понял, что вы имели в виду, говоря
Что такое ЭТО? Хоть бы упомянули, о чём речь... Почему "каждый раз"? Всего один запрос. MySQL его единожды обработает, и никакого цикла не надо. Если можно без цикла, лучше, быстрее, красивее без него. Тем более порядок обхода сайтов не очень-то важен - что сначала все с одного домена, затем с другого, что вперемешку,- всё равно в базе хранится "оптимизированно", т.е. вразброс. Извлекать потом можно по очереди, главную страницу не учитывать (хотя на странице "Ссылки"/"Контакты" тоже не очень-то много полезной информации, но она спокойно забирается и не вызывает возражений ![]() Что касается ошибки с синтаксисом SQL. Не удалось воспроизвести. ![]() ![]() ![]() ![]() =begin offtop А смысл? Лучше не надо - будем консультироваться по стандартным модулям ![]() ![]() Но параллельно писать свои ![]() И называть так же, как стандартные - чтоб никто потом не догадался! ![]() =end offtop |
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
да с точками и запятыми не сложилось
![]() сначала что непонятно: 1. строка $dbh -> do("INSERT IGNORE INTO pull(sitesID, url, status) SELECT `ID`, `url`, 1 FROM sites"); #Пересылаем нужные сайты в таблицу pull, помечая ссылки на их главные страницы статусом 1 Я не могу понять зачем это делать? 1. в таблице pull колонка url имеет UNIQUE атрибут и при добавлении каждый раз одной и тойже ссылки (например http://localhost/) скорее будет выдаваться ошибка или запись проигнорируется (щас сажусь тестить). поясню как было задумано по действиям. 1. делаем выбор что делать (в данном случае check) выбираем допустим один url из таблицы sites проверяем связь с ресурсом а не с базой если связь есть - забираем контент и парсим на ссылки. Выбрав все ссылки заносим их в базу (там уже находится http://localhost/) первая страница и все остальные. потом каждая выбирается и берется контент по каждой ссылке. Предположим у нас проиндексирована часть сайта - ну просто устали ждать. и при повторном запуске скрипта делаем INSERT IGNORE INTO pull(sitesID, url, status) - база их проигнорирует из-за UNIQUE и возможно выдаст ошибку. итак - что и куда ругается (щас добавлю) отправил в приват - чтоб не мусорить тут Это сообщение отредактировал(а) trigger - 23.1.2007, 03:35 |
|||
|
||||
JAPH |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: 3 Всего: 23 |
Понял, в чём проблема - два редиректа на один и тот же ресурс. Надо дописать:
Так, если неудачно выполняется execute (ошибка duplicate key), эта запись удаляется. Для корректной работы надо в соединении с базой убрать RaiseError => 1. Описанный вами check-алгоритм как раз и реализуется, только в исходном варианте это было прописано явно, а сейчас это уже труднее заметить. Почему делается INSERT-SELECT? Потому что изначально предполагается, что сайтами-кандидатами на обыск заполнена только таблица sites, pull при этом пустая. Этот запрос переводит все эти записи в pull, как если бы у нас была страничка из ссылок на нужные сайты. Проверка на связь с ресурсом, при успехе проход по всем страницам сайта? Проверка идёт, когда из базы выбирается ссылка на этот сайт, занесённая из sites. Если что-то не получилось - нет связи, сервер перегружен, ленивый сервер,...,- то скрипт об этом напишет, пометит ссылку (фактически, целый сайт) статусом 4 и спокойно пойдёт работать с другими сайтами. Остальное должно быть понятно - оно почти не изменилось. Кстати, надо бы подумать, в какой момент возвращаться к строкам статуса 4 и возвращать им статус 1. Может, делать их статус = номеру ошибки? (403, 404, 500) Ещё одно. Как насчёт ссылок вроде "#top"? Моё предложение - удалять такие хвосты.
|
||||
|
|||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
ок щас подставлю и запускаю - огромное спасибо.
Есть предложение! Во избежание ненужного разростание данной ветки переходить в приват... |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: 3 Всего: 23 |
Понял, в чём проблема - два редиректа на один и тот же ресурс. Надо в запрос вставить IGNORE. Проверьте, поможет ли.
Описанный вами check-алгоритм как раз и реализуется, только в исходном варианте это было прописано явно, а сейчас это уже труднее заметить. Почему делается INSERT-SELECT? Потому что изначально предполагается, что сайтами-кандидатами на обыск заполнена только таблица sites, pull при этом пустая. Этот запрос переводит все эти записи в pull, как Всё это игнорируем. Не могу понять, как это сообщение появилось, когда меня не было в интернете ![]() Это сообщение отредактировал(а) JAPH - 24.1.2007, 19:42 |
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
я понял все прекрасно.
скрипт работает - запустил час назад. пока не отвалился ![]() Это сообщение отредактировал(а) trigger - 23.1.2007, 11:48 |
|||
|
||||
trigger |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
ээээээээээээээээээээээ ... Ну в общем пока все замечательно - тестировал
для начала на малом проекте - 1700 документов - битые ссылки отловились - заодно и поправились ![]() Что касаемо более больших проектов - 3 000 и 15 000 документов проглотил нормально ну а остальные надоело ждать ![]() осталось только нормально проверить его на отношение к миру - дома начну проверять на чемто небольшом |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: 3 Всего: 23 |
Удачи!
![]() Если очень хочется, новой темой. Но в привате-то зачем? Секреты, что ли? OpenSource ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |