Vorrei analizzare i progetti di kickstarter.com usando scrapy, ma non riesco a capire come realizzare i progetti di ricerca spider che non esplicitamente specificano sotto start_urls. Ho trovato la prima parte del codice scrapy (posso estrarre le informazioni necessarie da un sito Web), non riesco a farlo per tutti i progetti sotto il dominio kickstarter.com/projects.Scrapy - analizza tutte le sotto-pagine di un determinato dominio
Da quello che ho letto, credo che l'analisi sia possibile (1) utilizzando i collegamenti nella pagina iniziale (kickstarter.com/projects), (2) utilizzando i collegamenti da una pagina di progetto per passare a un altro progetto, e (3) utilizzando una mappa del sito (che non credo abbia kickstarter.com) per individuare le pagine web da analizzare.
Ho passato ore a provare ciascuno di questi metodi ma non riesco a ottenere nulla.
Ho usato il codice tutorial scrapy e costruito su di esso.
Qui è la parte finora che funziona:
from scrapy import log
from scrapy.contrib.spiders import CrawlSpider
from scrapy.selector import HtmlXPathSelector
from tutorial.items import kickstarteritem
class kickstarter(CrawlSpider):
name = 'kickstarter'
allowed_domains = ['kickstarter.com']
start_urls = ["http://www.kickstarter.com/projects/brucegoldwell/dragon-keepers-book-iv-fantasy-mystery-magic"]
def parse(self, response):
x = HtmlXPathSelector(response)
item = kickstarteritem()
item['url'] = response.url
item['name'] = x.select("//div[@class='NS-project_-running_board']/h2[@id='title']/a/text()").extract()
item['launched'] = x.select("//li[@class='posted']/text()").extract()
item['ended'] = x.select("//li[@class='ends']/text()").extract()
item['backers'] = x.select("//span[@class='count']/data[@data-format='number']/@data-value").extract()
item['pledge'] = x.select("//div[@class='num']/@data-pledged").extract()
item['goal'] = x.select("//div[@class='num']/@data-goal").extract()
return item
Ho eseguito il codice e funziona. Questo raschia tutti i progetti lanciati di recente. Se voglio raschiare tutti i progetti (non solo quelli lanciati di recente), devo solo modificare le regole e start_urls? Grazie mille. Questo è un grande aiuto. Non so cosa posso fare per ripagare te e la comunità. Trasmetterò l'atto di gentilezza. –
@ user2167391: Nessun problema. Scrapy è davvero fantastico, ma è davvero difficile trovare esempi online. Per quanto riguarda Kickstarter, rendono difficile accedere a * all * dei loro progetti, quindi dovrai vedere dove si trovano tutti. – Blender