Python 痒蜘蛛的多重遗传

Python 痒蜘蛛的多重遗传,python,regex,scrapy,multiple-inheritance,scrapy-spider,Python,Regex,Scrapy,Multiple Inheritance,Scrapy Spider,是否可以创建一个从两个基础爬行器(即SitemapSpider和爬行爬行器)继承功能的爬行器 我一直在尝试从各个网站上搜集数据,并意识到并非所有网站都有网站上每个页面的列表,因此需要使用爬行蜘蛛。但是爬行蜘蛛会浏览很多垃圾页面,这有点过分了 我想做的是这样的: 启动我的Spider,它是SitemapSpider的一个子类,并传递正则表达式 匹配对parse_产品的响应以提取有用的 信息方法 从产品页面转到与正则表达式匹配的链接:/reviews/, 并将数据发送到parse_review函数。

是否可以创建一个从两个基础爬行器(即SitemapSpider和爬行爬行器)继承功能的爬行器

我一直在尝试从各个网站上搜集数据,并意识到并非所有网站都有网站上每个页面的列表,因此需要使用爬行蜘蛛。但是爬行蜘蛛会浏览很多垃圾页面,这有点过分了

我想做的是这样的:

  • 启动我的Spider,它是SitemapSpider的一个子类,并传递正则表达式 匹配对parse_产品的响应以提取有用的 信息方法

  • 从产品页面转到与正则表达式匹配的链接:/reviews/, 并将数据发送到parse_review函数。
    注意:“/reviews/”类型的页面未在网站地图中列出

  • 从/评论/页面中提取信息

  • 爬行爬行器基本上用于递归爬行和刮取

  • -------其他细节-------

    有问题的网站是www.flipkart.com 该网站有许多产品的列表,每个页面都有自己的详细信息页面。 与“详细信息”页面一起,它们是产品的相应“审查”页面。查看页面的链接也可在产品详细信息页面上找到

    注意:网站地图上没有列出评论页面。

    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()
    

    你在正确的轨道上,唯一剩下的是在你的
    parse_product
    函数的末尾,你必须像这样产生爬虫程序提取的所有URL

    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()
    
        # CrawlSpider defines this method to return all scraped urls.
        yield from self.parse(response)
    
    如果您没有语法的屈服,那么只需使用

    for req in self.parse(response):
        yield req
    

    您能否提供一个示例用例:目标站点和您想要获得的所需数据?我会帮忙的。谢谢。是的,当然,我会用其他信息编辑我的问题你好,alecxe,请提供一些详细信息,如果你真的可以谢谢你,这是让它工作的缺失点。然而,我看不到任何关于这一点的提到在刮痧文件,即使它是伟大的!