Python 获取产品主类别和子类别

Python 获取产品主类别和子类别,python,python-3.x,web-scraping,scrapy,Python,Python 3.x,Web Scraping,Scrapy,我正在使用scrapy python创建一个数据刮板。我使用此命令获取类别,但它只显示一个类别 链接: 这里是控制台预览 我想在单独的excel.csv列中显示所有主类别和子类别 请帮忙 关于使用Scrapy Shell,我生成了一个带有Scrapy genspider overflow的简单spider 您可以使用scrapy runspider overflow.py运行爬行器 import scrapy class OverflowSpider(scrapy.Spider):

我正在使用scrapy python创建一个数据刮板。我使用此命令获取类别,但它只显示一个类别

链接:

这里是控制台预览

我想在单独的excel.csv列中显示所有主类别和子类别

请帮忙


关于

使用Scrapy Shell,我生成了一个带有
Scrapy genspider overflow
的简单spider

您可以使用
scrapy runspider overflow.py运行爬行器

import scrapy


class OverflowSpider(scrapy.Spider):
    name = 'overflow'
    allowed_domains = ['royalprint.pk']
    start_urls = ['https://royalprint.pk/product/name-print-superhero-sweatshirt-011/']

def parse(self, response):
    categories=response.xpath("//span[@class='posted_in']/a/text()").getall()
    for category in categories:
        print(category)
它能打印出你需要的东西

如果要保存它,可以生成字典(而不是for循环):


并定义一个输出文件,当您进行如下CLI调用时:
-o myOutput.csv

请完整发布代码(以便于复制)。我以前没有使用scrapy,只使用beautiful soup。你试过getall()而不是get()了吗?先生,我已经发布了shellcode@HjSin,通过使用getall,我在[7]:response.css('span.posted_In a::text').getall()Out[7]:['Name Print Sweatshirt','Sweatshirt']中得到了这个结果,但是否可以先得到产品主类别,然后再得到子类别?由于WooBooad有主类别>子类别>子类别,只是一些提示:考虑将CSS选择器转换为XPath,因为Fracy自动执行它,当这样做时,您将获得性能+具有上下遍历的灵活性(关键字:兄弟姐妹、祖先、后代)。在这里您可以找到Xpath的帮助:@HannahJames刚刚看到,我错过了您想要的列输出。这将在列中输出类别,但在第二行中,第一行是升序数字。我猜您想要第一行中的类别,每列一个?现在应该是正确的;)
import scrapy


class OverflowSpider(scrapy.Spider):
    name = 'overflow'
    allowed_domains = ['royalprint.pk']
    start_urls = ['https://royalprint.pk/product/name-print-superhero-sweatshirt-011/']

def parse(self, response):
    categories=response.xpath("//span[@class='posted_in']/a/text()").getall()
    for category in categories:
        print(category)
yield dict.fromkeys(categories , ' ')