Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсер, 30 секунд и виртуальный хостинг 
:(
    Опции темы
Andrey_Skif
Дата 21.8.2012, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.5.2007
Где: Волгодонск

Репутация: нет
Всего: нет



Вопрос прозвучит банально - как написать парсер?

Но прежде, чем закидаете меня тапками, поясню, о чём конкретно хочу спросить.

Однажды решил написать скриптик. Как водится, после десятка переписываний всего с нуля успел забыть, чего изначально то хотел. Единственное, что в концепции не изменилось - это есть парсер. Естественно, погуглил, что да как. Радостно вооружился DomDocument и DOMXPath. Распарсил страничку, содержащую два десятка ссылок на нужные мне страницы... Дальше, надеюсь, вы поняли - 30 секунд и привет. Что по этому поводу говорит гугл? Что-то типа set_time_limit(), php.ini или fork(). Однако мой виртуальный хостер на такие извраты выдавал что-то ошибочное, однотипное и про соображения безопасности.

От нехватки знаний и опыта по уму сделать не удалось. В ход пошла фантазия. Сейчас сие чудо велосипедостроения выглядит так. Парсится страничка со ссылками, они вносятся в БД с пометкой "не обработано". А в конце функции file_get_contents() скармливается адресок нашего же скрипта :facepalm
И вот так пока все страницы не распарсим. Сам понимаю, что бредово. Но в 15-ти минутный тур по целевым страницам это безобразие ходит даже без ошибок.

И вот собственно вопрос. Как в принципе пишутся парсеры? Интересуют именно организационные вопросы. Понятно, что всё зависит от конкретной задачи. Но хотелось бы услышать тех, кто сталкивался с реалиями. А то по запросу про парсеры гугл выдает только статьи про регулярки
PM MAIL   Вверх
krypt3r
Дата 21.8.2012, 05:57 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 3
Всего: 16



А в чем сакральный смысл запуска парсеров из браузера, да еще на каком-то хостинге? Ставьте PHP себе, пишите парсер, запускайте его из консоли:
Код

$ php parser.php

PM MAIL   Вверх
MoLeX
Дата 21.8.2012, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Andrey_Skif @  21.8.2012,  00:53 Найти цитируемый пост)
От нехватки знаний и опыта по уму сделать не удалось. В ход пошла фантазия. Сейчас сие чудо велосипедостроения выглядит так. Парсится страничка со ссылками, они вносятся в БД с пометкой "не обработано". А в конце функции file_get_contents() скармливается адресок нашего же скрипта :facepalm
И вот так пока все страницы не распарсим. Сам понимаю, что бредово. Но в 15-ти минутный тур по целевым страницам это безобразие ходит даже без ошибок.


Все правильно сделали. Вообще на вирт хостинге лучше не экспериментировать с тайм лиимтом, а делать отложенные задания.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Andrey_Skif
Дата 21.8.2012, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.5.2007
Где: Волгодонск

Репутация: нет
Всего: нет



Цитата(krypt3r @ 21.8.2012,  05:57)
А в чем сакральный смысл запуска парсеров из браузера, да еще на каком-то хостинге? Ставьте PHP себе, пишите парсер, запускайте его из консоли:
Код

$ php parser.php

Изначальный сакральный смысл был вот в чем. Есть такой "замечательный" сайт как trudvsem.ru, на котором нет ни внятных разделов, ни обновления вакансий, ни api. А есть только поисковая строка. Да ещё и ссылки на вакансии динамические и меняются раз в несколько минут. Однажды зайдя на этот сайт захотел чуток облегчить себе жизнь. Мне не нужен полный список их вакансий. Мне всего-лишь нужны обновления по интересющим лично меня вакансиям. Т.е. по заходу на свою страничку я вижу небольшой список обновлений, а не поисковую строку, предлагающую мне всё сделать руками.

Кстати, запуск производится не из браузера, а по расписанию, через cron (вот это ещё не доделано, но идея именно такая)
PM MAIL   Вверх
Andrey_Skif
Дата 21.8.2012, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.5.2007
Где: Волгодонск

Репутация: нет
Всего: нет



Цитата(MoLeX @ 21.8.2012,  06:26)
Вообще на вирт хостинге лучше не экспериментировать с тайм лиимтом, а делать отложенные задания.

Была такая мысль. Если честно, не доразобрался. Крон задачами, вообще, можно через php-скрипты управлять? Время запуска, к примеру изменить?

krypt3r, запуск из консоли логичен, но зачем тогда php? Мне c# чуток ближе, на нем ровно то же самое можно сделать, не парясь над ограничениями. Хотелось бы получать обновления периодически и не обязательно дома (с телефона, например).

И ещё такой подвопрос. Пока читал про распараллеливание процессов (потоков?), наткнулся на применение веб-соккетов в php. Если опустить момент с виртуальным хостом, то имеет ли смысл их использовать при написании парсера, или это совсем другая история?
PM MAIL   Вверх
Sun_ok
Дата 21.8.2012, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.9.2006

Репутация: нет
Всего: нет



Есть еще такая вещь:
exec('php script.php > /dev/null &');
Скрипт запускается и не ждет ответа, таким образом таймаута не будет.
Но есть вероятность, что  у хоста залочен exec.
PM MAIL WWW   Вверх
krypt3r
Дата 22.8.2012, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 3
Всего: 16



Цитата
krypt3r, запуск из консоли логичен, но зачем тогда php?

Название раздела форума, где вы разместили тему, подскажет ответ ;) Консольный парсер вы можете писать на каком угодно вам языке, хоть на ассемблере.
Цитата
И ещё такой подвопрос. Пока читал про распараллеливание процессов (потоков?), наткнулся на применение веб-соккетов в php. Если опустить момент с виртуальным хостом, то имеет ли смысл их использовать при написании парсера, или это совсем другая история? 

Вопрос странный. Любое сетевое приложение, в том числе парсеры (кроме локальных), работают на сокетах в любом случае. В PHP для получения контента страницы чаще всего используется CURL
PM MAIL   Вверх
Andrey_Skif
Дата 22.8.2012, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.5.2007
Где: Волгодонск

Репутация: нет
Всего: нет



Цитата
Название раздела форума, где вы разместили тему, подскажет ответ ;)

Ага, мой косяк.

Цитата

Вопрос странный. Любое сетевое приложение, в том числе парсеры (кроме локальных), работают на сокетах в любом случае. В PHP для получения контента страницы чаще всего используется CURL

На счет соккетов имел в виду вот это

Разработка многозадачных приложений на PHP V5
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.