2008-08-29 18 views
32

He estado haciendo algunos scraping html en PHP utilizando expresiones regulares. Esto funciona, pero el resultado es quisquilloso y frágil. ¿Alguien ha usado algún paquete que brinde una solución más robusta? Una solución basada en configuración sería ideal, pero no soy exigente.HTML Scraping en Php

+0

Eche un vistazo a [this] (http://stackoverflow.com/questions/26947/how-to-implement-a-web-scraper-in-php#27109) thread - la pregunta va en una dirección similar – crono

Respuesta

28

Recomendaría PHP Simple HTML DOM Parser después de haber eliminado el código HTML de la página. Admite HTML no válido y proporciona una forma muy sencilla de manejar elementos HTML.

+8

Alternativas de terceros sugeridas a [SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) que realmente usan [DOM] (http://php.net/manual/en/book.dom.php) en lugar de String Parsing : [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/en/zend.dom.html), [QueryPath] (http://querypath.org/) y [FluentDom] (http://www.fluentdom.org). – Gordon

+0

¿me puede dar un ejemplo para hacer clic en cualquier enlace en una página determinada? –

5

Si la página que está raspando es válida X (HT) ML, entonces cualquiera de PHP's built-in XML parsers hará.

No he tenido mucho éxito con las bibliotecas PHP para raspar. Si eres aventurero, puedes intentar simplehtmldom. Recomendaría Hpricot para Ruby o Beautiful Soup para Python, que son ambos excelentes analizadores para HTML.

+0

Si va a analizar HTML particularmente descuidado, asegúrese de no utilizar BeautifulSoup 3.1.x (use 3.0.x). 3.1.x usa htmllib como su analizador sintáctico, que es mucho menos tolerante que el uso de sgmllib por parte de 3.0.x. – Tom

5

Me divertí trabajando con htmlSQL, que no es tanto una solución de gama alta, sino realmente fácil de usar.

+0

último comentario, pero acabo de encontrar su respuesta a través de google ... me gusta! :) – Ben

+0

¿Funciona para usted incluso ahora? No parece funcionar para mí ... – Dinesh

3

Usando PHP para raspar HTML, recomendaría cURL + regexp o cURL + algunos analizadores DOM aunque personalmente uso cURL + regexp. Si tienes un sabor profundo de la expresión regular, a veces es más preciso.

5

También recomendaría 'Simple HTML DOM Parser'. Es una buena opción, especialmente si está familiarizado con los selectores de jQuery o JavaScript, entonces se encontrará en casa.

I have even blogged about it in the past.