Существует проблема с этим выражением XPath
//*[contains(text(), "›")]/@href/text()
, поскольку атрибут href
не имеет свойства text()
.
Вот рабочий паук, которого вы можете адаптировать к вашим потребностям:
# -*- coding: utf-8 -*-
import scrapy
class GenyInterimSpider(scrapy.Spider):
name = 'geny-interim'
start_urls = ['http://www.geny-interim.com/offres/']
def parse(self, response):
for offer in response.xpath('//div[contains(@class,"featured-box")]'):
yield {
'title': offer.xpath('.//h3/a/text()').extract_first()
}
next_page_url = response.xpath('//a[@class="page" and contains(.,"›")]/@href').extract_first()
if next_page_url:
yield scrapy.Request(response.urljoin(next_page_url), callback=self.parse)