Parse не вызывается - PullRequest
       6

Parse не вызывается

0 голосов
/ 07 октября 2019

У меня есть код ниже, который я хочу перебрать через URL в CSV, и для каждого URL я хочу запустить некоторые селекторы и вернуть данные в вывод CSV. Кажется, что он перебирает стартовые URL, но выдает ошибку, говорящую, что синтаксический анализ не определен. я не могу понять, где я иду не так здесь. любая помощь приветствуется!

import scrapy
import csv

class CbdSitechekerSpider(scrapy.Spider):
    name = 'cbd_sitecheker'
    start_urls = []

    for url in open('sites.csv'):
        start_urls.append(url)

def start_requests(self):
    with open('sites.csv','r') as csvf:
        for url in csvf:
            yield scrapy.Request(url, callback = self.parse_url)

def parse_url(self, response):
    links = response.xpath=('//a/@href').extract_first()
    yield {'links' : links}

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Проверьте ваш отступ. Функции start_requests и parse_url должны иметь отступ справа, потому что сейчас они не принадлежат вашему классу.

class CbdSitechekerSpider(scrapy.Spider):
    name = 'cbd_sitecheker'

    def start_requests(self):
        with open('sites.csv','r') as csvf:
            for url in csvf:
                yield scrapy.Request(url, callback = self.parse_url)

    def parse_url(self, response):
        links = response.xpath=('//a/@href').extract_first()
        yield {'links' : links}
0 голосов
/ 09 октября 2019

Попробуйте:

def start_requests(self):
    parse_url = self.parse_url
    with open('sites.csv','r') as csvf:
        for url in csvf:
            yield scrapy.Request(url, callback = parse_url)

Таким образом, обратный вызов будет определен до того, как вы передадите его в функцию инициализации запроса.

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