follow example python request response scrapy sites

example - scrapy python documentation



Python Scrapy no siempre descarga datos del sitio web (1)

Uso de Scrapy para analizar un html. Mi pregunta es por qué a veces mi respuesta a la terapia de espalda a lo que quiero, pero a veces no devuelve una respuesta. ¿Es mi culpa? Así es como parece la función de análisis.

class AmazonSpider(BaseSpider): name = "amazon" allowed_domains = ["amazon.org"] start_urls = [ "http://www.amazon.com/s?rh=n%3A283155%2Cp_n_feature_browse-bin%3A2656020011" ] def parse(self, response): sel = Selector(response) sites = sel.xpath(''//div[contains(@class, "result")]'') items = [] titles = {''titles'': sites[0].xpath(''//a[@class="title"]/text()'').extract()} for title in titles[''titles'']: item = AmazonScrapyItem() item[''title''] = title items.append(item) return items


Creo que simplemente no estás usando la expresión XPath más adecuada.

El HTML de Amazon es un poco desordenado, no muy uniforme y, por lo tanto, no es muy fácil de analizar. Pero después de un poco de experimentación, pude extraer los 12 títulos de un par de resultados de búsqueda con la siguiente función de parse :

def parse(self, response): sel = Selector(response) p = sel.xpath(''//div[@class="data"]/h3/a'') titles = p.xpath(''span/text()'').extract() + p.xpath(''text()'').extract() items = [] for title in titles: item = AmazonScrapyItem() item[''title''] = title items.append(item) return items

Si le importa el orden real de los resultados, el código anterior podría no ser apropiado, pero creo que no es el caso.