У меня есть две функции в Scrapy.
def parse_attr(self, response):
for resource in response.xpath(''):
item = Item()
item['Name'] = response.xpath('').extract()
item['Title'] = response.xpath('').extract()
item['Contact'] = response.xpath('').extract()
item['Gold'] = response.xpath('').extract()
company_page = response.urljoin(resource.xpath('/div/@href').extract_first())
if company_page:
request = scrapy.Request(company_page, callback = self.company_data)
request.meta['item'] = item
yield request
else:
yield item
def company_data(self, response):
item = response.meta['item']
item['Products'] = response.xpath('').extract()
yield item
parse_attr
вызывает company_data
, когда он извлекает @href
со страницы и передает его company_page
, однако этот href не всегда существует,Как я могу проверить, если href существует, и если нет, остановить scrapy от перехода к другой функции?
Выше код не удовлетворяет этому условию, потому что company_page всегда true.
Я хочу, чтобы скрап прекратился, если нет href, и закончил свою работу только с уже имеющимися предметами.Если href найден, я хочу, чтобы scrap переместился к другой функции и извлек дополнительную информацию.