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.