【问题标题】:Scrapy - parsing product info && product reviewsScrapy - 解析产品信息 && 产品评论
【发布时间】:2020-03-11 11:54:25
【问题描述】:

我正在创建一个爬虫来获取产品信息和产品评论,并从特定类别导出到 csv 文件。例如,我需要从裤子类别中获取所有信息,所以我的爬取从那里开始。

我可以从那里轻松提取每个产品的链接。但随后我需要爬虫打开该链接,获取每个产品所需的所有信息。我还需要它来获取产品的所有评论,但问题是评论也有分页。

我从这里开始:

类SheinSpider(scrapy.Spider):

name = "shein_spider"
start_urls = [
    "https://www.shein.com/Men-Pants-c-1978.html?icn=men-pants&ici=www_tab02navbar02menu01dir06&scici=navbar_3~~tab02navbar02menu01dir06~~2_1_6~~real_1978~~~~0~~0"
]

def parse(self, response):
    for item in response.css('.js-good'):
        yield {"product_url": item.css('.category-good-name a::attr(href)').get()}

我知道如何解析目录列表中的信息,但不知道如何让爬虫跟随列表中的每个链接。

【问题讨论】:

    标签: parsing scrapy web-crawler


    【解决方案1】:

    在 scrapy 中跟踪链接的方法是只生成一个带有 URL 的 scrapy.Request 对象以及您要用于处理该链接的解析。来自scrapy文档教程“Scrapy的跟随链接机制:当您在回调方法中产生一个请求时,Scrapy将安排发送该请求并注册一个回调方法以在该请求完成时执行。”

    我建议查看 Scrapy 文档 here 中的教程,尤其是“关注链接”部分。

    在您的具体示例中,这是使其工作的代码。请注意,您的产品 url 需要完整,并且您从中获取它的 href 可能只有一个相对 url。

    name = "shein_spider"
    start_urls = [
        "https://www.shein.com/Men-Pants-c-1978.html?icn=men-pants&ici=www_tab02navbar02menu01dir06&scici=navbar_3~~tab02navbar02menu01dir06~~2_1_6~~real_1978~~~~0~~0"
    ]
    
    def parse(self, response):
        for item in response.css('.js-good'):
            product_url = item.css('.category-good-name a::attr(href)').get()
            yield scrapy.Request(product_url, callback=self.parse_item)
    
    def parse_item(self, response):
        # Do what you want to do to process the product details page #
    
    

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多