Scrapy не возвращает результатов - PullRequest
0 голосов
/ 15 февраля 2019

Я новичок в области терапии.Я пытаюсь почистить место работы Действительно для проекта, над которым я работаю.Я медленно изучаю синтаксис, как очищать с помощью Google Chrome Inspect, а затем нажимаю Control-F.Я последовал этому уроку:

https://www.digitalocean.com/community/tutorials/how-to-crawl-a-web-page-with-scrapy-and-python-3

Я застрял, пытаясь получить 16 списков на страницу.Я вижу, что это обычно начинается с "

//span[@class="company"]/a/text()

Вот мой код до этого момента:

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):
            pass

Это ничего не возвращает. Я ожидал бы 16 строк, поэтому мой SET_SELECTOR неверенПомощь была бы очень признательна!

1 Ответ

0 голосов
/ 15 февраля 2019

Ваш селектор работает правильно.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...