Ist es möglich, eine Spinne zu schaffen, die die Funktionalität von zwei Basisspinnen erbt, nämlich SitemapSpider und CrawlSpider?Mehrfache Vererbung in scrapy Spinnen
Ich habe versucht, Daten von verschiedenen Websites zu scrappen und erkannte, dass nicht alle Websites Auflistung jeder Seite auf der Website haben, so dass Sie CrawlSpider verwenden müssen. Aber CrawlSpider durchläuft viele unerwünschte Seiten und ist irgendwie ein Overkill.
Was würde Ich mag es, etwas zu tun, wie folgt aus:
meine Spinne starten, die eine Unterklasse von SitemapSpider ist und passieren regex abgestimmt Antworten auf die parse_products nützliche Informationen Methode zu extrahieren.
Gehen Sie zu Links, die mit der Regex übereinstimmen:/reviews/von der Produktseite, und senden Sie die Daten an die parse_review-Funktion.
Hinweis: "/ reviews /" Art Seiten nicht aus/Bewertungen/SeiteCrawlSpider
grundsätzlich für rekursive Crawls und Schaben
Extract Informationen in XML-Sitemap aufgeführten ------- ZUSÄTZLICHE DETAILS -------
Die fragliche Seite ist www.flipkart.com Die s ite hat Auflistungen für viele Produkte, wobei jede Seite ihre eigene Detailseite hat. Zusammen mit der Detailseite gibt es eine entsprechende "Review" -Seite für das Produkt. Der Link zur Überprüfungsseite ist auch auf der Produktdetailseite verfügbar.
Hinweis: Review-Seiten sind in der Sitemap nicht aufgeführt.
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()
Können Sie ein Beispiel Anwendungsfall bieten: die Zielstelle und die gewünschten Daten, die Sie zu bekommen? Würde helfen zu helfen. Vielen Dank. – alecxe
ja sicher, ich werde meine Frage mit zusätzlichen Informationen bearbeiten – Ishan070692
Hallo Alecxe, Bitte geben Sie einige Details, wenn Sie könnten – Ishan070692