Web scraping 浏览每个类别和产品名称具有不同名称的类别

Web scraping 浏览每个类别和产品名称具有不同名称的类别,web-scraping,scrapy,scrapy-spider,Web Scraping,Scrapy,Scrapy Spider,我正试图从一个名为: 它的目录结构不是很一致,我不知道下一步该怎么办 以下是我用于刮片的代码: from scrapy.spiders import CrawlSpider class MySpider(CrawlSpider): name = 'powermaxed' start_urls = ['https://www.powermaxed.com/'] def parse_product(self, response): yield {

我正试图从一个名为:

它的目录结构不是很一致,我不知道下一步该怎么办

以下是我用于刮片的代码:

from scrapy.spiders import CrawlSpider


class MySpider(CrawlSpider):

    name = 'powermaxed'
    start_urls = ['https://www.powermaxed.com/']

    def parse_product(self, response):

        yield {
            'product_title': response.xpath('//div[@class="container"]//div[@class="row"]//div[@id="content"]//h1/text()').extract_first()
            'product_price_w/_tax': response.xpath('//div[@class="container"]//div[@class="row"]//div[@id="content"]//div[@class="row"]//div[@class="product-buy-wrapper"]//ul[@class="list-unstyled pp"]//li//h2//span[@id="formated_price"]/text()').extract_first()
            'product_price_w/o_tax': response.xpath('//div[@class="container"]//div[@class="row"]//div[@id="content"]//div[@class="row"]//div[@class="product-buy-wrapper"]//ul[@class="list-unstyled pp"]//li//span[@id="formated_tax"]/text()').extract_first()
            'product_desc': response.xpath('//div[@id="product-tabs"]//div[@class="tab-content"]//div[@id="tab-description"]//p/text()').extract_first()
            'product_uses': response.xpath('//div[@id="product-tabs"]//div[@class="tab-content"]//div[@id="tab-description"]//ul//li/text()').extract()
        }
提取的数据将是产品信息

我需要的是从这个网站上的所有目录访问所有产品页面 并提取我在代码中输入的信息


我对网站进行了scrapy外壳处理,因此我设置了要从蜘蛛上提取的数据。

您能为您的问题添加更多细节吗?你需要什么样的帮助

例如,从主页获取所有主要类别,如
nav#supermenu ul>li>a[href]:not(.tllhome)
,并从中删除所有产品。如果需要,通过左侧过滤器块迭代a类分区面板


您还可以尝试从sitemap()中删除类别,并从这些页面获取所有产品。

您只需删除所有页面,然后返回产品(如果有):

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor


class MySpider(CrawlSpider):

    name = 'powermaxed.com'
    start_urls = ['https://www.powermaxed.com/']

    rules = (
        Rule(LinkExtractor(), callback='parse_product'),
    )

    def parse_product(self, response):

        product_title = response.xpath('//div[@class="container"]//div[@class="row"]//div[@id="content"]//h1/text()').extract_first()

        if product_title:
            yield {
                'product_title': product_title,
                'product_price_w/_tax': response.xpath('//div[@class="container"]//div[@class="row"]//div[@id="content"]//div[@class="row"]//div[@class="product-buy-wrapper"]//ul[@class="list-unstyled pp"]//li//h2//span[@id="formated_price"]/text()').extract_first(),
                'product_price_w/o_tax': response.xpath('//div[@class="container"]//div[@class="row"]//div[@id="content"]//div[@class="row"]//div[@class="product-buy-wrapper"]//ul[@class="list-unstyled pp"]//li//span[@id="formated_tax"]/text()').extract_first(),
                'product_desc': response.xpath('//div[@id="product-tabs"]//div[@class="tab-content"]//div[@id="tab-description"]//p/text()').extract_first(),
                'product_uses': response.xpath('//div[@id="product-tabs"]//div[@class="tab-content"]//div[@id="tab-description"]//ul//li/text()').extract(),
            }

纪尧姆,我想再次感谢你,然而,结果似乎真的到处都是,这是得到的路径以及一些产品。这是一个开始,我真的很感谢你。