E 'possibile creare un ragno che eredita le funzionalità di due ragni di base, vale a dire SitemapSpider e CrawlSpider?ereditarietà multipla in ragni Scrapy
mi hanno cercato di raschiare i dati provenienti da vari siti e si rese conto che non tutti i siti hanno elenco di ogni pagina del sito, in tal modo la necessità di utilizzare CrawlSpider. Ma CrawlSpider passa attraverso un sacco di pagine spazzatura e è una specie di un peso inutile.
Quello che vorrei fare è qualcosa di simile:
iniziare il mio Spider, che è una sottoclasse di SitemapSpider e superare regex risposte abbinati ai parse_products per estrarre utili metodo informazioni.
Passare ai collegamenti corrispondenti alla regex:/reviews/dalla pagina prodotti, e inviare i dati alla funzione parse_review.
Nota: "/ recensioni /" pagine di tipo non sono elencati nel sitoinformazioni Estratto/recensioni/pagina
CrawlSpider è fondamentalmente per le scansioni ricorsive e raschiando
------- DETTAGLI AGGIUNTIVI -------
Il sito in questione è www.flipkart.com s esso ha elenchi per molti prodotti, con ogni pagina che ha la sua pagina di dettaglio. Insieme con la pagina dei dettagli, la loro è una "revisione" pagina corrispondente per il prodotto. Il link alla pagina di revisione è disponibile anche nella pagina dei dettagli del prodotto.
Nota: le pagine di commento non sono elencati sul sito.
class WebCrawler(SitemapSpider, CrawlSpider):
name = "flipkart"
allowed_domains = ['flipkart.com']
sitemap_urls = ['http://www.flipkart.com/robots.txt']
sitemap_rules = [(regex('/(.*?)/p/(.*?)'), 'parse_product')]
start_urls = ['http://www.flipkart.com/']
rules = [Rule(LinkExtractor(allow=['/(.*?)/product-reviews/(.*?)']), 'parse_reviews'),
Rule(LinkExtractor(restrict_xpaths='//div[@class="fk-navigation fk-text-center tmargin10"]'), follow=True)]
def parse_product(self, response):
loader = FlipkartItemLoader(response=response)
loader.add_value('pid', 'value of pid')
loader.add_xpath('name', 'xpath to name')
yield loader.load_item()
def parse_reviews(self, response):
loader = ReviewItemLoader(response=response)
loader.add_value('pid','value of pid')
loader.add_xpath('review_title', 'xpath to review title')
loader.add_xpath('review_text', 'xpath to review text')
yield loader.load_item()
Potrebbe fornire un caso ad esempio l'uso: il sito di destinazione e i dati desiderati si vuole ottenere? Aiuterebbe ad aiutare Grazie. – alecxe
si certo, mi permetterà di modificare la mia domanda con informazioni aggiuntive – Ishan070692
ciao alecxe, Si prega di fornire alcuni dettagli se si potesse – Ishan070692