Парсинг HTML- 3 подхода - Форум успешных вебмастеров - GoFuckBiz.com - Страница 3
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB90.2486
BTC/USD68530.9384
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 10.09.2010, 19:41
Start Post: Парсинг HTML- 3 подхода 
  #21
sandy
Сеньор Член
 
Аватар для sandy
 
Регистрация: 11.04.2007
Адрес: The World
Сообщений: 1,125
Бабло: $107796
Отправить сообщение для sandy с помощью ICQ
По умолчанию

Полная версия (с сорцами - в блоге)


Перед нашей братией часто возникает необходимость парсить html-страницы(тк добровольно контент посредством API/RSS/XML-данных отдают далекоо не все Захотелось написать мне эту статью потому, что многие даже не представляют что есть варианты парсинга кроме регулярок

1.Строковые функции
Использование функций strpos / substr (поиск нужного места — извлечение подстроки) . Самый быстрый вариант (в 8 раз быстрее регулярок по результатам некоторых тестов). Из недостатков — громоздкий код, решается написанием библиотечных функций, например, такую (skipped)

2.Регулярные выражения
Самый компактный способ записи желаемого ) И самый любимы у сеошников ) Из минусов — код быстро становится нечитаемым. Как-то раз приходилось сталкиваться с парсером мегапорносайта, в котором было регулярок на два листа ) Пришлось писать заново. По скорости этот вариант между строковыми функциями и Dom-деревом.

3.Разбор DOM-дерева
Самый медленный способ, но самый надежный. Если в предыдущих способах все обычно ломается от появления лишних кавычек или пробела в коде (или вписывания разработчиком нового аттрибута итп), то Dom-дерево будет парсится пока у нужного элемента не сменится name или id. Для всех популярных языков программирования как правило уже есть библиотеки разбора, вам остается лишь дописывать функции типа этой (skipped)
sandy вне форума  
Старый 17.09.2010, 04:43   #22
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от sandy Посмотреть сообщение
для Джавы многие дом-парсеры умеют фиксить ошибки в хтмл. для других языков тоже самое думаю.
Да, конечно, в каждом языке есть свои (x)html фиксеры, которые пытаются исправить ошибки верстки, но это дополнительные расходы ресурсов, которые еще больше утяжеляют dom-парсеры. Для PHP часто используют библиотеку tidy.
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 17.09.2010, 04:49   #23
super
Ебланнед
 
Регистрация: 03.06.2008
Сообщений: 3,846
Бабло: $432125
По умолчанию

иногда меня просто бесит оптимизация, для чего она, чтобы пользователь при современной мощи компов почувствовал 0.N1, где N в неебическом периоде 0, улучшение скорости? ))))))))))

p.s. я это время на дополнительный функционал потрачу )
super вне форума  
Старый 17.09.2010, 05:02   #24
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

super, ты, видимо, не использовал тяжелые алгоритмы параллельно или внутри циклов. Мне часто приходиться оптимизировать код и докупить железа - не всегда выход
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 17.09.2010, 05:15   #25
super
Ебланнед
 
Регистрация: 03.06.2008
Сообщений: 3,846
Бабло: $432125
По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
super, ты, видимо, не использовал тяжелые алгоритмы параллельно или внутри циклов. Мне часто приходиться оптимизировать код и докупить железа - не всегда выход
я не буду утверждать что ты не прав насчёт тяжёлых алго потому, что не знаю основную твою мысль под этим твоим словочетанием, просто скажу, для работы, именно для работы, пох вообще на чём пишется, летают, ну у меня так ), как объекты, преломляющие пространства и оказывающие в других вселенных одним нажатием кнопки или мышки ) , я понимаю есть сложные алго, многое анализирующие, но я тебе так скажу, все эти алго не намного быстрее выполняются в реализациях на соответствующих яп, дающих соответствующую скорость

p.s. что в наше время современность компов так сказать, игра )
super вне форума  
Старый 17.09.2010, 11:55   #26
sandy
Сеньор Член
 
Аватар для sandy
 
Регистрация: 11.04.2007
Адрес: The World
Сообщений: 1,125
Бабло: $107796
ТС -->
Отправить сообщение для sandy с помощью ICQ
автор темы ТС По умолчанию

Цитата:
Сообщение от super Посмотреть сообщение
иногда меня просто бесит оптимизация, для чего она, чтобы пользователь при современной мощи компов почувствовал 0.N1, где N в неебическом периоде 0, улучшение скорости? ))))))))))

p.s. я это время на дополнительный функционал потрачу )
ботмастер, перелогинься
sandy вне форума  
Старый 17.09.2010, 20:08   #27
Cabal
Senior Member
 
Регистрация: 21.08.2008
Сообщений: 145
Бабло: $13390
По умолчанию

Цитата:
Сообщение от WebNinja Посмотреть сообщение
часто быстрее регулярочку написать чем выйоубываться. но например на питоне есть http://www.crummy.com/software/BeautifulSoup/ ваще улет )
Улёт куда? Очень может быть что улёт в хуй. Гугл не парсит c ошибками через раз, xml тоже так же сейчас xml от одной партнёрки ковыряю так 837 заведомо существующих блоков так и не нашлись супом нихуя, а остальные точно такие же по точно такому же условию - пожалуйста. Так что не улёт а хорошая либа для определённых целей, но парсер там - кал.
__________________
ТРОЛОЛО над Зимним Дворцом в Санкт-Петербурге. Сенсация!!!

Последний раз редактировалось Cabal; 17.09.2010 в 20:13.
Cabal вне форума  
Старый 17.09.2010, 20:56   #28
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
По умолчанию

Cabal, попробуй юзать BeautifulSoup апи с парсером html5lib.
Т.е. html5lib парсит html и затем предоставляет доступ к DOM через несколько API, один из которых BeautifulSoup.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
lorien вне форума  
Старый 17.09.2010, 21:06   #29
Cabal
Senior Member
 
Регистрация: 21.08.2008
Сообщений: 145
Бабло: $13390
По умолчанию

Цитата:
Сообщение от lorien Посмотреть сообщение
Cabal, попробуй юзать BeautifulSoup апи с парсером html5lib.
Т.е. html5lib парсит html и затем предоставляет доступ к DOM через несколько API, один из которых BeautifulSoup.
Спасибо, я это всё знаю. Так и дёлаю - когда спотыкается Soup переписываю на html5lib(ну или на регулярки). Но дело в том, как я читал где то, разработчики htm5lib предупреждают - этот интерфейс там не навечно, рано или поздно халява кончится и он исчезнет в новых версиях. Хз может я "слышал звон" просто но вроде и не понял о чём там речь..
__________________
ТРОЛОЛО над Зимним Дворцом в Санкт-Петербурге. Сенсация!!!
Cabal вне форума  
Старый 17.09.2010, 21:31   #30
Cabal
Senior Member
 
Регистрация: 21.08.2008
Сообщений: 145
Бабло: $13390
По умолчанию

О прикольно, ща хотел найти информацию о том что BS не будет поддерживаться, нашел один только форум и ты там lorien, челу с ником dmnBrest что то отвечаешь по hml5lib Как там: "до чего техника дошла вашу маму и тут и там уже показывают)"(c)
__________________
ТРОЛОЛО над Зимним Дворцом в Санкт-Петербурге. Сенсация!!!
Cabal вне форума  
Старый 17.09.2010, 22:51   #31
izlade
Силденафил
 
Аватар для izlade
 
Регистрация: 17.05.2009
Сообщений: 546
Бабло: $11198228
Отправить сообщение для izlade с помощью Yahoo
По умолчанию

Немного не в тему правда:
Кто как парсит хуизы доменов? Мне нада парсить допустим когда проэкспайрятся или когда зареганы домены. Сейчас у меня в систем32 лежит вхуиз.екзе который отдаёт скрипту хуиз домена для дальнейшей обработки. Так вот инфу из хуизов разных доменов нужно парсить поразному, у меня в скрипте проходит через 15 регулярок это всё, в итоге срабатывает на 80%. Как лучше сделать хз

По теме: регулярки рулез)
izlade вне форума