Я занимался парсингом HTML в PHP с использованием регулярных выражений. Это работает, но результат непростой и хрупкий. Кто-нибудь использовал какие-либо пакеты, которые обеспечивают более надежное решение? Решение, управляемое конфигурацией, было бы идеальным, но я не придирчив.






Я бы порекомендовал PHP Simple HTML DOM Parser после того, как вы соскребли HTML со страницы. Он поддерживает недопустимый HTML и предоставляет очень простой способ обработки элементов HTML.
Если страница, которую вы очищаете, является допустимой X (HT) ML, то подойдет любой из Встроенные в PHP парсеры XML.
У меня не было особого успеха с библиотеками PHP для парсинга. Если вы любите приключения, вы можете попробовать простой. Я бы рекомендовал Hpricot для Ruby или Красивый суп для Python, которые являются парсерами отлично для HTML.
Если вы собираетесь разбирать особенно небрежный HTML, убедитесь, что вы не используете BeautifulSoup 3.1.x (используйте 3.0.x). 3.1.x использует htmllib в качестве парсера, что гораздо менее снисходительно, чем использование sgmllib в версии 3.0.x.
У меня были очень хорошие результаты с упомянутым выше Простой парсер Html DOM. А еще есть tidy Extension для PHP, который тоже очень хорошо работает.
Мне было весело работать с htmlSQL, который не так уж и высококлассный, но с ним действительно просто работать.
поздний комментарий, но я только что нашел ваш ответ через google .. мне нравится! :)
Это работает у вас даже сейчас? У меня вроде не работает ...
Используя PHP для очистки HTML, я бы рекомендовал cURL + regexp или cURL + некоторые парсеры DOM, хотя я лично использую cURL + regexp. Если вы хорошо разбираетесь в регулярных выражениях, иногда они точнее.
Я бы также порекомендовал «Simple HTML DOM Parser». Это хороший вариант, особенно если вы знакомы с селекторами jQuery или JavaScript, тогда вы почувствуете себя как дома.
Мне пришлось использовать curl на моем хосте 1and1.
http://www.quickscrape.com/ - это то, что я придумал, используя класс Simple DOM!
Посмотрите ветку это - вопрос идет в том же направлении