Ваш селектор работает правильно.SET_SELECTOR
не является специфичной для Scrapy переменной.Вы можете вызвать это как угодно или даже поместить строку селектора прямо в вызов функции.Это также не причина, по которой ничего не возвращается.
Он ничего не возвращает, потому что вы не указали ему ничего вернуть.В вашем текущем коде он найдет каждый раздел задания (в цикле for
), но затем вы скажете ему ничего не делать (pass
).
Вот пример того, как получить компанию для каждогозадание:
import scrapy
class IndeedSpider(scrapy.Spider):
name='indeed_jobs'
start_urls = ['https://www.indeed.com/jobs?q=software%20engineer&l=Portland%2C%20OR']
def parse(self, response):
SET_SELECTOR = '.jobsearch-SerpJobCard'
for jobListing in response.css(SET_SELECTOR):
# Yield is necessary to return scraped data.
yield {
# And here you get a value from each job.
'company': jobListing.xpath('.//span[@class="company"]/a/text()').get('').strip()
}
Обратите внимание на использование .//
в начале XPath.Причина в документации .И я также добавил значение по умолчанию ''
в get()
, когда это поле отсутствует ( документы ), чтобы strip()
не выдавало ошибку.
Однако я предлагаю вамсначала проработайте официальный учебник по Scrapy, так как там будут объяснены недостающие части: https://docs.scrapy.org/en/latest/intro/tutorial.html