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.