С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 69

Написание парсера или грабера на php, как писать?

13.04.2013, 11:12. Показов 6186. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно сабж.

Кто писал расскажите как вы их пишете. Существует ли одна технология их написания, или их несколько?

Кто какие готовые классы использует? И какие вообще есть классы для написания парсеров?

Видел класс Snoopy, Кто то пользуется функцией file_get_contents, Кто то использует библиотеку cURL, кто то domDocument.

И вот вопрос к вам, что вообще выбрать для написания парсера? Ведь наверно существует очень много всяких готовых библиотек?

Что посоветуете?

Надо чтобы скрипт мог работать через proxy, с поддержкой cookie, с подменой HTTP referer и заменой USER_AGENT и работать в несколько потоков, например параллельно парсить разные страницы со своими настрйками proxy HTTP referer и заменой USER_AGENT.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.04.2013, 11:12
Ответы с готовыми решениями:

Написание грабера новостей с сайта
Здравствуйте! У меня есть просьба к DELPHI мастерам. Помогите написать или предложите подобную программу для грабинга новостей. Мне...

Написание грабера новостей с сайта
Здравствуйте! У меня есть просьба к PHP мастерам. Помогите написать или предложите подобную программу для грабинга новостей. Мне бы...

Написание тестов, как их писать.?
в общем как протестировать класс? ну вот например у меня есть класс: namespace ObmenValut.Code.Finance { public static class...

13
4 / 4 / 2
Регистрация: 19.01.2013
Сообщений: 79
15.04.2013, 20:36
Библиотека для парсинга - PHP Simple HTML DOM Parser.
Выполнение запросов (правда не знаю как на счёт нескольких потоков) - Zend_Http.
0
 Аватар для webber
7 / 7 / 2
Регистрация: 21.10.2012
Сообщений: 101
17.04.2013, 15:51
В Simple HTML DOM Parser нет многопотчности
лучше, на мой взгляд, взять AngryCurl
0
4 / 4 / 2
Регистрация: 19.01.2013
Сообщений: 79
17.04.2013, 18:30
Цитата Сообщение от webber Посмотреть сообщение
В Simple HTML DOM Parser нет многопотчности
лучше, на мой взгляд, взять AngryCurl
я не имел введу использование Simple как средство выполнения запросов. Для этого я рекомендовал использовать зендовую библиотеку.
0
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
17.04.2013, 19:03
при работе с невалидным кодом и незакрытыми тегами все вышеперечисленные библы - полный отстой, продукт студентов недоучек. курите лучше регулярки - надежнее будет.

Добавлено через 4 минуты
а выбор между curl и file_get_contents - это лишь способ получения контента. Прямого отношения к разбору содержимого страницы это все не имеет.
0
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 13
17.04.2013, 19:06
Выбрать одну из лучших библиотек для парсинга:
- PHPQuery
- Nokogiri

Остальное исходит из конкретного задания. Существует очень много мелких ньюансов
0
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
17.04.2013, 19:08
Цитата Сообщение от romanag Посмотреть сообщение
PHPQuery
пробовал, как писал выше продукт недоучек. Nokogiri - не знаю.
0
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 13
17.04.2013, 19:19
Цитата Сообщение от casual_visitor Посмотреть сообщение
пробовал, как писал выше продукт недоучек. Nokogiri - не знаю.
Эти библиотеки хорошо работают с невалидным кодом. У них есть свои преимущества перед и новичку как раз подойдет
0
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
17.04.2013, 19:28
PHPQuery две вложенные одну в другую таблицы возвращает как три таблицы при абсолютно валидном коде. Новичку имхо не нужен гимор с косяками..
0
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 69
18.04.2013, 15:55  [ТС]
Интересно это. Просто решил написать кое какой парсер, вот и думаю с чего начать. Опыта можно сказать не много, но имею представление что такое регулярки. Как понимаю с помощью регулярных выражений можно решить почти любую задачу? А все библиотеки которые вы привели, по сути делают все за тебя, не придется писать никаких регулярок и всего такого?

Тогда ещё такой ворос, какая библиотека или модуль лучше всего имитирует браузер? Я как понимаю cURL? Она может работать с куками и проксями и user agent?


И ещё можно узнать, может ли эта библиотека например организовать такое? Есть сайт, на него например в три потока с разных ip(через прокси) и с разными user agenta ми и для каждого потока свои куки заходит скрипт имитирующий работу браузера, и просто переходит по страницам сайта с интервалом например минута. и так постоянно в течение дня. Реально такое организовать на PHP? Или нет у него такой возможности?

Добавлено через 15 часов 15 минут
Что скажете?
0
 Аватар для andrei_z
5 / 5 / 1
Регистрация: 09.03.2013
Сообщений: 31
21.04.2013, 14:02
Цитата Сообщение от picusus Посмотреть сообщение
Я как понимаю cURL? Она может работать с куками и проксями и user agent?
Да может.

А вот мне интересно как правильно сделать если нужно спарсисть целую категорию с сайта. Я так понмаю заходим на первую страницу ищем урлы статей (или товаров) в цикле при помощи curl открываем каждую страницу и достаем нужную инфу, потом переходим на 2-ю страницу и делаем тоже самое. А если в категории страниц 50 и на каждой странице по 10 новостей, это нам нужно будет открыть 550 страниц. Такой скрип будет работать очень долго.
Поделитесь опытом как пишите парсеры в таких ситуациях?
0
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
21.04.2013, 17:39
andrei_z если мой скромный ответ поможет, то обработку делайте постранично, один запуск скрипта на одну обрабатываемую страницу.. На этом этапе парсим страницу, заодно получаем ссылки на другие страницы. Ссылки на страницы сайта нужно фиксировать в файле с флагом "обработан" или "необработан". В начале скрипта читается файл ссылок и дополняется по необходимости.. Ваша страница, с которой вы запускаете свой скрипт, запускает его ajax-ом, ваш скрипт возвращает ответ - остались ли еще необработанные страницы.. цикл закончится когда вы обработаете все ссылки. Несколько десятков тысяч страниц таким образом у меня парсились около двух часов.. хостер ничего мне не сказал по поводу трафика..
1
 Аватар для andrei_z
5 / 5 / 1
Регистрация: 09.03.2013
Сообщений: 31
21.04.2013, 22:37
AndreyDyakonov, Спасибо. Кажется все понял. На днях попробую сделать.
А вот еще интересует вопрос как вы отфильтровываете ссылки на другие сайты?
0
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
21.04.2013, 22:52
самое простое, ссылка начинающаяся с http:// есть внешняя ссылка.. если на вашем сайте-жертве используются всегда абсолютные, такое бывает, ссылки тогда нужно проверять на http://sitename.zone

Добавлено через 3 минуты
вот как у меня, если есть указание протокола, то это внешняя ссылка
PHP
1
2
//ищем указание протокола - нам не надо
if (preg_match('~[a-z]{3,}://|mailto:~siu', $buf))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2013, 22:52
Помогаю со студенческими работами здесь

Написание парсера
В общем не так давно учу VB, и тут поставил себе задачу написать "разделитель" объясню кто не понял к примеру есть текстовик с ...

Написание парсера файла
Исходя из этого вопроса. Суть такова. Имеется файл с таким содержимым: /idd(/.*)? u:object_r:idd_data_file:s0 ...

Написание Web парсера
хочу написать парсер. предположим- есть сайт, на котором опр. инфа в виде таблицы на 4000 страниц. нужно чтоб при нахождении совпадении к...

Иморт из .DB в MySql. Написание парсера
Подскажите плз есть файл в формате .DB примерно такого содержания <FONT color=#0072c2> и нужно импортировать его в MySql.Вот...

Ошибка при написание парсера
Добрый день. Пишу парсер XML для лабы в универе. Столкнулся с ошибкой 3 строка. use Deep::Encode; Как можно исправить эту...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru