URL-адрес запроса должен быть str или unicode, получен% s: '% type (url) .__ name__ - PullRequest
0 голосов
/ 08 апреля 2019

Я кодировал простого паука для получения информации о кавычках:

import scrapy

class GoodReadsSpider(scrapy.Spider):
    #identity
    name = 'goodreads'

    #requests
    def start_requests(self):
        url = "https://www.goodreads.com/quotes?page=1",
        yield scrapy.Request(url=url, callback= self.parse)

    #response
    def parse(self, response):
        for quote in response.selector.xpath("//div[@class='quote']"):
            yield {
                'text': quote.xpath(".//blockquote[@class='quoteBody']/text()[1]").extract_first(),
                'author': quote.xpath(".//span[@class='quoteAuthor']/text()").extract_first(),
                'tag': quote.xpath(".//div[@class='quoteTags']/a/text()").extract(),
            }

Когда я запускаю его, я получаю следующую ошибку:

Request url must be str or unicode, got %s:' % type(url).__name__

Кто-нибудь знает почему?

1 Ответ

1 голос
/ 08 апреля 2019

В вашем start_requests для url у вас есть запятая в конце строки, поэтому она думает, что url - это кортеж.

def start_requests(self):
    url = "https://www.goodreads.com/quotes?page=1",  # <- remove comma here
    yield scrapy.Request(url=url, callback= self.parse)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...