Scrapy - Objetos de lista de selección

Ejemplos de selectores en respuesta HTML

A continuación se muestran algunos de los ejemplos en HTMLResponse y tendremos el objeto HTMLResponse, que se instancia con el selector, que se muestra a continuación:

res = Selector(html_response)

Puede seleccionar el h2 elementos del cuerpo de respuesta HTML, que devuelve el objeto SelectorList como -

>>res.xpath("//h2")

Puede seleccionar el h2 elementos del cuerpo de la respuesta HTML, que devuelve la lista de cadenas Unicode como -

>>res.xpath("//h2").extract()

Devuelve los elementos h2.

y

>>res.xpath("//h2/text()").extract()

Devuelve el texto definido en la etiqueta h2 y no incluye elementos de la etiqueta h2.

Puede ejecutar las etiquetas p y mostrar el atributo de clase como:

for ele in res.xpath("//p"):
   print ele.xpath("@class").extract()

Ejemplos de selectores en respuesta XML

A continuación se muestran algunos de los ejemplos en XMLResponse y tendremos el objeto XMLResponse, que se instancia con el selector, que se muestra a continuación:

res = Selector(xml_response)

Puede seleccionar los elementos de descripción del cuerpo de la respuesta XML, que devuelve el objeto SelectorList como -

>>res.xpath("//description")

Puede obtener el valor del precio del feed XML de Google Base registrando un espacio de nombres como:

>>res.register_namespace("g", "http://base.google.com/ns/1.0")
>>res.xpath("//g:price").extract()

Eliminar espacios de nombres

Cuando crea los proyectos Scrapy, puede eliminar los espacios de nombres utilizando el método Selector.remove_namespaces () y utilizar los nombres de los elementos para trabajar adecuadamente con XPaths.

Hay dos razones para no llamar al procedimiento de eliminación de espacio de nombres siempre en el proyecto:

  • Puede eliminar el espacio de nombres que requiere la repetición del documento y la modificación de todos los elementos que conducen a una operación costosa para rastrear documentos por Scrapy.

  • En algunos casos, es necesario utilizar espacios de nombres y estos pueden entrar en conflicto con algunos nombres de elementos y espacios de nombres. Este tipo de casos ocurre con mucha frecuencia.