Python 2.7 scrapy:请求url必须是str或unicode,获取选择器

Python 2.7 scrapy:请求url必须是str或unicode,获取选择器,python-2.7,scrapy,screen-scraping,Python 2.7,Scrapy,Screen Scraping,我正在用Scrapy编写一个蜘蛛程序,以获取Pinterest的用户详细信息。我试图获得用户及其追随者的详细信息(直到最后一个节点) 以下是spider代码: 从scrapy.spider导入BaseSpider 进口羊瘙痒 从pinners.items导入PinterestItem 从scrapy.http导入FormRequest 从URLPRASE导入URLPRASE 类示例(BaseSpider): 我得到以下错误: raise TypeError('Request url must b

我正在用Scrapy编写一个蜘蛛程序,以获取Pinterest的用户详细信息。我试图获得用户及其追随者的详细信息(直到最后一个节点)

以下是spider代码:

从scrapy.spider导入BaseSpider

进口羊瘙痒 从pinners.items导入PinterestItem 从scrapy.http导入FormRequest 从URLPRASE导入URLPRASE

类示例(BaseSpider):

我得到以下错误:

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

我确实检查了列表的类型(提取的URL)。它提供了unicode。

错误是由解析方法中的内部for循环生成的:

for new_urls in response.xpath('//div[@class="Module User gridItem"]/a/@href'):
        yield scrapy.Request(new_urls, callback=self.Next)
new\u url
变量实际上是一个选择器,请尝试以下操作:

for base_url in response.xpath('//div[@class="Module User gridItem"]/a/@href'):
    list_a = response.urljoin(base_url.extract())        
    yield scrapy.Request(list_a, callback=self.Next)
for base_url in response.xpath('//div[@class="Module User gridItem"]/a/@href'):
    list_a = response.urljoin(base_url.extract())        
    yield scrapy.Request(list_a, callback=self.Next)