Python 使用Scrapy刮取嵌套URL

Python 使用Scrapy刮取嵌套URL,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我正在尝试刮取此网页: 我尝试了不同的方法,但每次都会出现语法错误。我对Python和Scrapy了解不多。有人能帮我吗 我的要求是: 在页面的标题部分,有一个背景图像、一些描述和两个与产品相关的图像 在产品范围部分中有一些图像。我想通过所有的图片,并刮个别产品的细节 结构如下: 以下是我目前的代码: import scrapy class QuotesSpider(scrapy.Spider): name = "plumber" start_ur

我正在尝试刮取此网页:

我尝试了不同的方法,但每次都会出现语法错误。我对Python和Scrapy了解不多。有人能帮我吗

我的要求是:

  • 在页面的标题部分,有一个背景图像、一些描述和两个与产品相关的图像

  • 产品范围部分中有一些图像。我想通过所有的图片,并刮个别产品的细节

结构如下:

以下是我目前的代码:

import scrapy
class QuotesSpider(scrapy.Spider):
    name = "plumber"
    start_urls = [
        'https://www.grohe.com/in/7780/bathroom/bathroom-faucets/essence/',
    ]

def parse(self, response):
    for divs in response.css('div#product-variants div.viewport div.workspace div.float-box'):
        yield {
            #response.css('div#product-variants a::attr(href)').extract()
            'producturl': divs.css('a::attr(href)').extract(),
            'imageurl': divs.css('a img::attr(src)').extract(),
            'description' : divs.css('a div.text::text').extract() + divs.css('a span.nowrap::text').extract(),
             next_page = producturl
             next_page = response.urljoin(next_page)
             yield scrapy.Request(next_page, callback=self.parse)
        }

您应该从您的项目中提取下一页收益率。
通常,您可以遍历产品,进行一些加载,并将其保存在请求的
meta
参数中,如下所示:

def parse(self, response):
    for divs in response.css('div#product-variants div.viewport div.workspace div.float-box'):
        item = {'producturl': divs.css('a::attr(href)').extract(),
                'imageurl': divs.css('a img::attr(src)').extract(),
                'description' : divs.css('a div.text::text').extract() + divs.css('a span.nowrap::text').extract()}
         next_page = response.urljoin(item['producturl'])
         yield scrapy.Request(next_page, callback=self.parse_page, meta={'item': item})

def parse_page(self, response):
    """This is individual product page"""
    item = response.meta['item']
    item['something_new'] = 'some_value'
    return item

您应该从您的项目中提取下一页收益率。
通常,您可以遍历产品,进行一些加载,并将其保存在请求的
meta
参数中,如下所示:

def parse(self, response):
    for divs in response.css('div#product-variants div.viewport div.workspace div.float-box'):
        item = {'producturl': divs.css('a::attr(href)').extract(),
                'imageurl': divs.css('a img::attr(src)').extract(),
                'description' : divs.css('a div.text::text').extract() + divs.css('a span.nowrap::text').extract()}
         next_page = response.urljoin(item['producturl'])
         yield scrapy.Request(next_page, callback=self.parse_page, meta={'item': item})

def parse_page(self, response):
    """This is individual product page"""
    item = response.meta['item']
    item['something_new'] = 'some_value'
    return item

为达到此类型要求,项目是强制性的?。你可以建议任何一个好的网站来删除这些类型的嵌套URL抓取,我上面的方法,它是空的JSON文件创建后刮取URL。在控制台**(参考:无)2017 02-15 17:29∶51 [刮]错误:蜘蛛错误处理(参考:无)回溯(最近的呼叫最后):文件“/usr/lib/python2.7/dist-packages/scrapy/utils/defer.py”,iter_errback中的第102行生成下一个(it)文件“/usr/lib/python2.7/dist-packages/scrapy/spidermiddleware/offsite.py“,第28行,进程中_spid**@pradeep请尝试我的编辑,如果再次发生,您能否在pastebin中发布某种类型的完整错误?请查看以实现此类型要求项目是强制性的?”?。你可以建议任何一个好的网站来删除这些类型的嵌套URL抓取,我上面的方法,它是空的JSON文件创建后刮取URL。在控制台**(参考:无)2017 02-15 17:29∶51 [刮]错误:蜘蛛错误处理(参考:无)回溯(最近的呼叫最后):文件“/usr/lib/python2.7/dist packages/scrapy/utils/defer.py”,第102行,在iter_errback生成下一个(it)文件“/usr/lib/python2.7/dist packages/scrapy/spidermiddleware/offsite.py”,第28行,在进程中_spid**@pradeep请尝试我的编辑,如果再次发生,你能在pastebin中发布某种类型的完整错误吗?请查看