Ответы пользователя по тегу Python
  • Scrapy: как передать ссылку в функцию, чтобы она ее, в свою очередь, отослала в Selector?

    @WalterWhite
    Не нужно вызывать никакие методы у Request. Scrapy сам вызовет всё что нужно, и когда нужно.
    Паук от страницы может получить данные(Item) или путь(Request) или и то и другое одновременно. Вам нужно возвращать из методов последовательности из Request и/или Item.
    def parse(self. response):
        sel = Selector(response)
        # из стартовой страницы выдёргиваем список категорий (носки, трусы, рубашки...)
        for catalog_link in sel.xpath('// . . . . /@href'):
            # указываем что нужно будет запросить страницу по ссылке, 
            # а результат(Response) обработать в методе
            yield Request(url=catalog_link, callback=self.parse_catalog)
    
    def parse_catalog(self, response):
        # ответы сервера будут сыпаться сюда
        sel = Selector(response)
        
        # если сама категория представляет интерес то описываем её
        category = MyCategoryItem()
        category['name'] = sel.xpath( . . .                     # как называется
        category['count'] =  . . .                              # сколько товаров
        . . .
        # и выбрасываем из метода
        yield category
        
        # получаем список ссылок на конкретные рубашки
        for page_link in sel.xpath('//. . . ./@href'):
            # выбрасываем из метода
            yield Response(url=page_link, callback=self.parse_page)
    
    def parse_page(self, response):
         . . .
         item = MyGoodsItem()
         . . .
         yield item

    Но проще будет прочитать документацию.
    Ответ написан
    1 комментарий