Scrapy не следит за следующей функцией анализа - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь написать простой скриптовый скрипт, чтобы избавиться от летнего кода Google с помощью технологии, которая мне нужна.Его работа в процессе.Моя функция разбора работает нормально, но всякий раз, когда я возвращаюсь в функцию org, она не выдает никаких результатов.

# -*- coding: utf-8 -*-
import scrapy



class GsocSpider(scrapy.Spider):
    name = 'gsoc'
    allowed_domains = ['https://summerofcode.withgoogle.com/archive/2018/organizations/']
    start_urls = ['https://summerofcode.withgoogle.com/archive/2018/organizations/']
    def parse(self, response):
        for href in response.css('li.organization-card__container a.organization-card__link::attr(href)'):
            url = response.urljoin(href.extract())
            yield scrapy.Request(url, callback = self.parse_org)

    def parse_org(self,response):
        tech=response.css('li.organization__tag organization__tag--technology::text').extract()
    #if 'python' in tech:
        yield
        {
        'name':response.css('title::text').extract_first()
        #'ideas_list':response.css('')
    }

1 Ответ

0 голосов
/ 20 декабря 2018

Прежде всего, вы неправильно настраиваете allowed_domains, как это указано в документации :

Необязательный список строк, содержащих домены, которым этот паук разрешенползать.Запросы для URL-адресов, не принадлежащих доменным именам, указанным в этом списке (или их поддоменам), не будут выполняться, если включено OffsiteMiddleware.

Допустим, ваш целевой URL-адрес https://www.example.com/1.html, затем добавьте пример.com 'к списку.

Как видите, вам нужно включить только домены, и это функция фильтрации (поэтому другие домены не сканируются).Также это необязательно, поэтому я бы порекомендовал не включать его.

Также ваш css для получения tech неверен, он должен быть:

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