Scrapy - Objetos da lista de seleção

Exemplos de seletor em resposta HTML

A seguir estão alguns dos exemplos em HTMLResponse e teremos o objeto HTMLResponse, que é instanciado com o seletor, mostrado a seguir -

res = Selector(html_response)

Você pode selecionar o h2 elementos do corpo da resposta HTML, que retorna o objeto SelectorList como -

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

Você pode selecionar o h2 elementos do corpo de resposta HTML, que retorna a lista de strings Unicode como -

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

Ele retorna os elementos h2.

e

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

Ele retorna o texto definido na tag h2 e não inclui elementos da tag h2.

Você pode percorrer as tags p e exibir o atributo de classe como -

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

Exemplos de seletor em resposta XML

A seguir estão alguns dos exemplos em XMLResponse e teremos o objeto XMLResponse, que é instanciado com o seletor, mostrado a seguir -

res = Selector(xml_response)

Você pode selecionar os elementos de descrição do corpo da resposta XML, que retorna o objeto SelectorList como -

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

Você pode obter o valor do preço do feed XML do Google Base registrando um namespace como -

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

Removendo Namespaces

Ao criar os projetos Scrapy, você pode remover os namespaces usando o método Selector.remove_namespaces () e usar os nomes dos elementos para trabalhar apropriadamente com XPaths.

Existem duas razões para não chamar o procedimento de remoção de namespace sempre no projeto -

  • Você pode remover o namespace que requer a repetição do documento e a modificação de todos os elementos que levam a uma operação cara para rastrear documentos pelo Scrapy.

  • Em alguns casos, você precisa usar namespaces e eles podem entrar em conflito com alguns nomes de elementos e namespaces. Esse tipo de caso ocorre com muita frequência.