Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/78: Рейтинг темы: голосов - 78, средняя оценка - 4.68
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
1

Идея парсера

15.08.2013, 22:04. Показов 14752. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На днях начал разбираться с темой парсеров.
Хочу создать парсер спортивных событий.
Возьмем для примера для парсинга сайт My Score
Какие есть идеи для создания парсера? Парсер думаю лучше делать на PHP? Какую технику или метод применить для создания данного парсера. Посоветуйте знающие люди. В теме парсеров чайник, поэтому полезные советы будут крайне полезны.
Парсить (забирать) необходимо только данные в таблице, т.е. данные спортивных событий, а так же при открытии какого либо матча, парсить и эти более подробные данные.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2013, 22:04
Ответы с готовыми решениями:

Код парсера не работает
нужно спарсить новости со странички http://kanevskaya.info/news хотя бы в текстовый документ, а...

Ошибка в создании парсера
Создаю парсер на библиотеке simple_html_dom, у меня установлен Денвер. Текст Ошибки: Warning:...

Ошибка парсера TCPDF
Всем привет! Много раз пользовался TCPDF для создания pdf'ок, всё было нормально... Но тут...

Долгая работа парсера
Здравствуйте. Собственно проблема в том что парсер грузится около 10-ти секунд. В чем может быть...

29
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
15.08.2013, 22:21 2
Цитата Сообщение от litbit Посмотреть сообщение
Парсер думаю лучше делать на PHP?
разные есть языки..
Цитата Сообщение от litbit Посмотреть сообщение
Какую технику или метод применить для создания данного парсера.
Изучайте регулярки.. А библиотеки вам сейчас предложат - шлите их подальше. Все готовые решения работают в том случае, если автор сайта вам пообещал соблюдать стандарты..
1
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
15.08.2013, 22:36  [ТС] 3
Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
разные есть языки..
Да знаю. Я привел пример сайта. Какой язык для парсинга этого сайта лучше всего подойдет или тут особой разницы по функциональности и качеству от языка не зависит?

Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
Изучайте регулярки
Так, да что-то я уже про регулярки слышал. Капну в этом направлении.

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


Посмотрите сайт. Там где главные страницы (футбол, теннис и т.д.) их вроде легче спарсить, по идее, но получится ли спарсить другие страницы? Например когда нажимаем на матч, у нас открывается совсем другая информация с разной статистикой.
0
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
15.08.2013, 22:40 4
Цитата Сообщение от litbit Посмотреть сообщение
Какой язык для парсинга этого сайта лучше всего подойдет или тут особой разницы
Язык лучше тот который вы знаете. у пыха плюс в том что он бесплатен и среди бесплатных конкурента вы не найдете.
1
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
15.08.2013, 22:42  [ТС] 5
Поделитесь качественными материалами по созданию парсеров.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
15.08.2013, 22:44 6
Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
А библиотеки вам сейчас предложат - шлите их подальше. Все готовые решения работают в том случае, если автор сайта вам пообещал соблюдать стандарты..
т.е., через SimpleHtmlDom, к примеру, не надо, надо именно через регулярки, "да здравствуют велосипеды!" ?
1
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
15.08.2013, 22:48  [ТС] 7
Цитата Сообщение от KOPOJI Посмотреть сообщение
через SimpleHtmlDom
Обоснуйте выбор. Получится ли спарсить, то что я хочу с помощью этого?

Добавлено через 1 минуту
Поделитесь готовыми решениями парсеров, по возможности парсеров спортивных событий в режиме live. Для примера, для лучшего понимания.
0
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
15.08.2013, 23:07 8
Цитата Сообщение от KOPOJI Посмотреть сообщение
т.е., через SimpleHtmlDom, к примеру, не надо
да ради Бога. Просто потом эффекты возникают неожиданные. Ни одной библиотеки php(в том.ч и SimpleHtmlDom) , корректно работающей с невалидным кодом(а ведь браузеры как-то с ним справляются) я не встречал. Так что думаю, что любая разработка в этом направлении не будет велосипедом

Добавлено через 17 минут
SimpleHtmlDom, на мой взгляд очень плохо справляется с табличной версткой, точнее с вложенными таблицами. В результате парсинга мы получим не дерево объектов вложенных друг в друга, а кучу дублирующих друг друга таблиц...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
16.08.2013, 10:19 9
Цитата Сообщение от litbit Посмотреть сообщение
Обоснуйте выбор
Собственно, здесь все написано. http://xdan.ru/Uchimsya-parsit... arser.html
Цитата Сообщение от litbit Посмотреть сообщение
Получится ли спарсить, то что я хочу с помощью этого?
Нет. Впрочем, также, как и с регулярками - контент генерируется скриптами. Можете проверить
PHP
1
echo htmlspecialchars(file_get_contents('http://www.myscore.ru/'));
И попробуйте найти, к примеру, див с классом table-main или таблицу с классом soccer (а ведь именно в них "выводится" информация)

Добавлено через 1 минуту
AndreyDyakonov, регулярки мощный инструмент, но, имхо, для парсинга есть куда более удобные инструменты
1
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
16.08.2013, 11:47  [ТС] 10
Цитата Сообщение от KOPOJI Посмотреть сообщение
Нет. Впрочем, также, как и с регулярками - контент генерируется скриптами.
Что-же получается, нет ни какого способа чтобы вытянуть информацию о матчах с того сайта?

Добавлено через 1 час 18 минут
Ребят, ну что ни кто не знает как можно парсить матчи с этого сайта http://www.myscore.ru/ ???

Учитывая что матчи генерируются скриптами!
0
60 / 57 / 22
Регистрация: 15.12.2009
Сообщений: 231
Записей в блоге: 1
16.08.2013, 12:13 11
Никогда не пользуйтесь только регулярками для серьезного парсинга html-кода!
Сейчас в задачах тоже стоит парсинг данных с десятка ресурсов. Пока остановился на свеженькой вещице https://github.com/google/gumbo-parser.
1
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
16.08.2013, 12:15 12
Цитата Сообщение от litbit Посмотреть сообщение
Учитывая что матчи генерируются скриптами!
они не генерируются скриптами, просто данные поступают отдельно. На самом деле, так даже проще. Парсер делать не придется (ну или совсем совсем простой, для транспорта), если вам нужно просто сохранить, например. Возьмите Chrome Dev Tools, или Firebug (или Fiddler, или WireShark) и посмотрите все запросы. я вот нашел обращение к странице http://d.myscore.ru/x/feed/f_1_0_4_ru_1 (но туда вручную ходить бесполезно -- видимо, нужно выставлять кастомные заголовки, их там аж несколько), кажется там и есть все данные. Правда в пока неизвестном мне формате -- похоже на бинарный, но какой то он уж слишком текстовый, для бинарного (я бы на вашем месте проверил наличие парсеров bson, protobuf, thrift, avro в подключаемых скриптах. вероятно, это один их них. а если и нет, то все равно алгоритм вы точно можете извлечь -- данные же на клиенте распаковываются)
Хотя, там еще открывается вебсокет-соединение. Не знаю, что по нему происходит, если честно, но вероятно это просто обновление данных.
Если уверены, что на сервере нет защиты от ботов, то вперед и с песней.
Если предположительно, есть, тогда задача сильно усложняется. Я сейчас решаю подобную задачу, с помощью gen_fsm (erlang). Пока еще только-только разобрался с ним, но кажется, в нем все классно.

Добавлено через 2 минуты

Не по теме:

chesar, тоже на хабре прочитали? кто-то уже задумал сделать модули для пхп, и других языков?

1
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
16.08.2013, 14:16  [ТС] 13
Цитата Сообщение от NEbO Посмотреть сообщение
они не генерируются скриптами, просто данные поступают отдельно
Тут такая интересная вещь получается.
Есть сайт http://www.livescore.in/ , он предоставляет данный сервис/услугу размещения спортивной статистики бесплатно, но с приличным количеством своих баннеров.
По идее сайт http://www.myscore.ru/ пользуется этой услугой, но на нем почему-то практически в два раза больше видом спорта.
Есть сайт http://www.flashscore.com/ идентичная копия сайта http://www.myscore.ru/ , но на английском языке.

По идее именно эти два сайта http://www.flashscore.com и http://www.myscore.ru пользуются услугой сайта http://www.livescore.in , но тогда почему в скрипте который отображает данные во всех трех сайтах ссылается именно на http://www.flashscore.com.
Кто способен понять, какой сайт является первоисточником?

Цитата Сообщение от NEbO Посмотреть сообщение
если вам нужно просто сохранить
Я в данной теме с парсерами новичек. Надеюсь правильно выражусь. Мне надо, чтобы данные о матчах, которые там обновляются в режиме live (онлайн) отображались у меня на сайте, тоже при этом чтобы обновлялись примерно с такой же скоростью.
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
16.08.2013, 15:52 14
Цитата Сообщение от litbit Посмотреть сообщение
Кто способен понять, какой сайт является первоисточником?
наверное, тот, кто спрашивает я вот не футболист, и не спортсмен, и на всю эту кучу ссылок смотрю примерно так же, как если бы вы сейчас посмотрели на статью об алгоритме Хиндли-Милнера. Так что это решать вам, какой сайт парсить
Цитата Сообщение от litbit Посмотреть сообщение
при этом чтобы обновлялись примерно с такой же скоростью
если ставится такое требование, то нужно четко выяснить интервал времени, за который данные устаревают. Если вам раз в 10 минут нужно обновлять, то нужно использовать постоянные соединения, иначе затраты на подключение к этим ресурсам при каждом запросе будут весьма существенны... на пхп можно сделать только пакетную обработку: спарсили весь сайт (или достаточно большую его часть), записали в базу, затем отображаете на запросах. Для погоды, например, такой вариант может прокатить, если делать обновление раз в 12-24 часа, для курса валют (если отображать так, для галочки, или рассчитывать стоимость товаров в разных валютах в интернет-магазине), и др. Вообщем, все, что не нуждается в сверхчастом обновлении, что обновляется не слишком часто на сайтах-источниках, или данные только добавляются небольшими кусками, а старые не изменяются.
Чтобы отображать в реальном времени, нужно чтобы соединение также было постоянным, чтобы можно было уменьшить количество простаиваний -- когда информация на исходном сайте не меняется, и когда нет запросов к данной информации на вашем сайте (известная проблема производитель-потребитель).
еще сильнее усложняет систему наличие операций типа поиска (работающих со всеми данными).
Если же их нет, и вас устраивает, что операции ввода-вывода будут идти долго (ну например, низкое количество запросов к странице с этой информацией, или у вас памяти на сервере полным полно, и канал широкий), вероятно, вам стоит задуматься над созданием мини-прокси. В противном случае, в "обычном" php задача хоть сколь угодно эффективного решения не имеет.
Цитата Сообщение от litbit Посмотреть сообщение
надо, чтобы данные о матчах, которые там обновляются в режиме live (онлайн) отображались
это не так уж важно, все равно это упростит парсинг
0
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
16.08.2013, 17:10  [ТС] 15
Цитата Сообщение от NEbO Посмотреть сообщение
нужно четко выяснить интервал времени, за который данные устаревают
Данные устаревают ОЧЕНЬ быстро. Если идет какой нибудь матч (особенно теннис), то данные могут устаревать буквально через пару секунд (интервал между обновлением может составлять примерно 5-10 сек).

Цитата Сообщение от NEbO Посмотреть сообщение
я вот не футболист, и не спортсмен, и на всю эту кучу ссылок смотрю примерно так же, как если бы вы сейчас посмотрели на статью об алгоритме Хиндли-Милнера
Знание первоисточника не зависит от знаний спорта. Необходимо понимание скриптов, чтобы разобраться кто первоисточник, но я в этом не силен.
0
16 / 16 / 8
Регистрация: 03.06.2013
Сообщений: 90
16.08.2013, 17:36 16
помню хотел с нескольких сайтов спарсить ip, логины и пароли от сбрученых дедиков, циклом. Мне понадобилось - file_get_contents, preg_match_all, foreach и icon_v и всё

для этого сайта я думаю хватить file_get_contents и preg_match_all и по крону запускать скрипт
0
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
16.08.2013, 17:49  [ТС] 17
Цитата Сообщение от zilone Посмотреть сообщение
для этого сайта я думаю хватить file_get_contents и preg_match_all и по крону запускать скрипт
я думаю не хватит, вы видели код ? Там нет в открытом виде данных которые надо парсить (нет в открытом виде данных о матчах)!!!
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
16.08.2013, 18:02 18
Цитата Сообщение от litbit Посмотреть сообщение
Необходимо понимание скриптов
неверно. никаких знаний скриптов не достаточно, чтобы судить о первоисточнике, которого, вероятно вообще нет, если база распределенная, и несколько участников просто делятся друг с другом информацией. Если вы хотите узнать, откуда появляются данные на конкретном сайте, вам нужны серверные скрипты, доступа к которым нет. Но даже если эта информация будет вам доступна, вы все равно не можете быть уверены, что перед вами первоисточник.
Вы смотрите на водоем (ваш сайт, с которого вы собираетесь парсить), и говорите, что из этого озера вода (информация) никуда не течет(первоисточник). Говорите, что нужно накапать в него подкрашенной жидкости (информация, которую можно узнать через серверные скрипты), чтобы увидеть течение (распространение информации). Но если вы не проследуете за вашим пятном, вы ничего не узнаете... Если же проследуете, вы , вероятно, увидите новый водоем, который так же нужно будет исследовать. И так вы можете ходить очень долго. Пока не посмотрите на карту (ваши знания об этой предметной области в целом, нечто, что было составлено группой лиц, коллективное творчество и опыт).
Но в данной задаче даже "ходить" никуда не получится -- вам не подлить подкрашенной жидкости. Сервер -- это т.н. "черный ящик". Вы просто смотрите издалека на этот водоем, и пытаетесь что-то придумать, сделать какие-то умозаключения. А в действительности у вас нет даже возможности установить, это озеро, река, море или океан.
Попробуйте установить первоисточник в СМИ, или например, в списках прокси. Его нет, ибо эта информация распределена по своей природе.
Далее, вы в действительности не хотите установить первоисточник. Когда вы испытываете жажду, а рядом нет воды, вы начинаете ее искать. Находите маленький ручеек, из которого напиться не в состоянии (разумеется, я говорю абстрактно). Ищите дальше, куда он впадает -- в реку. Далее, следуя за рекой вы попадете в другую, больше, а затем в море. Воды в море полно, но из него нельзя пить, ибо вода соленая. Зато вы установили первоисточник, разумеется, можете гордиться собой, но практически полезного вам это не даст абсолютно ничего.
А исследовать, где, из нескольких вариантов, информация более полная и более точная, нужно человеку со знаниями в предметной области. Например, мой сосед плохо разбирается в программировании. Поэтому, если я у него спрошу, какая книга по C++ более полна и точна: Шилдта или Страуструпа, он не сможет мне ничего ответить (разве что наугад).
И в любом случае, заморочки с установлением того, с какого сайта парсить -- это оставьте себе или задайте где-то в другом разделе. Здесь мы говорим конкретно о парсинге.
Цитата Сообщение от litbit Посмотреть сообщение
Данные устаревают ОЧЕНЬ быстро
делайте прокси, для 1-5 запросов в секунду, вероятно, задержка будет не слишком велика. при этом разумеется, вам будут доступны только те операции, которые есть на удаленном сервере. иначе задача на пхп неразрешима. есть phpDaemon, вероятно, он вам подойдет, но я о нем ничего не знаю (и не собираюсь узнавать). Я бы на вашем месте посмотрел в сторону других языков

Не по теме:

для решения этой задачи подойдет почти все кроме пхп (изза ограниченности его "из-коробочной" платформы, а равно как и его несовершенства, особенно для приложений-демонов): ruby, java, python, js, C++, C#, итд



Добавлено через 1 минуту
Цитата Сообщение от litbit Посмотреть сообщение
я думаю не хватит, вы видели код ? Там нет в открытом виде данных которые надо парсить (нет в открытом виде данных о матчах)!!!
вы меня не слышите.
Цитата Сообщение от NEbO Посмотреть сообщение
они не генерируются скриптами, просто данные поступают отдельно. ... Парсер делать не придется (ну или совсем совсем простой, для транспорта)... Возьмите Chrome Dev Tools, или Firebug (или Fiddler, или WireShark) и посмотрите все запросы. я вот нашел обращение к странице http://d.myscore.ru/x/feed/f_1_0_4_ru_1
0
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
16.08.2013, 18:18  [ТС] 19
Цитата Сообщение от NEbO Посмотреть сообщение
Если вы хотите узнать, откуда появляются данные на конкретном сайте
Родителем данных проектов является мега-кампания http://www.livesportmedia.eu/references/
Возможно данные поступают от неё.

Цитата Сообщение от NEbO Посмотреть сообщение
вы меня не слышите
Извините, слышу, просто не очень понимаю всего. Да это точно, что данные поступают от куда-то, но они скрываются скриптами.

Не имею представления как парсить такую инфу. И как ее перехватывать если она от куда-то идет.

Цитата Сообщение от NEbO Посмотреть сообщение
делайте прокси, для 1-5 запросов в секунду, вероятно, задержка будет не слишком велика. при этом разумеется, вам будут доступны только те операции, которые есть на удаленном сервере
К сожалению я этого не понимаю.
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
16.08.2013, 18:32 20
Цитата Сообщение от litbit Посмотреть сообщение
И как ее перехватывать если она от куда-то идет
Цитата Сообщение от NEbO Посмотреть сообщение
Возьмите Chrome Dev Tools, или Firebug (или Fiddler, или WireShark)
в хроме или фаере нажмите правую кнопочку мышки на нужной странице. Если вы правша, то правой рукой мышку опустите на нижнюю строку в появившемся квадратике. нажмите левую кнопочку мышки. внизу откроется большой квадратик, с кучей панелек и менюшек. среди менющек поищите "Network" или "Сеть", если у вас русская версия. Опять, если вы правша, правой рукой подведите курсор мышки к этой надписи "Network" (или "Сеть"). Нажмите левую кнопочку. Перезагрузите страницу (F5). Увидите запросы.
Алгоритм не полон (сообщите, если вы левша, я постараюсь его подкорректировать)
0
16.08.2013, 18:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2013, 18:32
Помогаю со студенческими работами здесь

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

Изменение верстки источника парсера
Есть php-парсер(даже оговорены условия парсинга с источником), он работает хоть и качает инфу через...

Литература по написанию новостного парсера
Всем доброго времени суток. С чего вообще начать писать парсер новостей с других сайтов? Что можно...

Не понятно как работает код парсера
Здравствуйте, уважаемые форумчане:) Решил разобраться и написать простенький парсер. Застрял на...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru