Python 无法在scrapy中使用列表理解获取某些链接

Python 无法在scrapy中使用列表理解获取某些链接,python,python-3.x,web-scraping,scrapy,Python,Python 3.x,Web Scraping,Scrapy,我已经用python编写了一个脚本,使用scrapy在向某个url发出post请求后从response获取链接。当我尝试使用下面的脚本时,链接是完美的 工作模式: 然而,我的意图是使用列表理解来达到同样的效果,但是我得到了一些错误 使用列表理解: 我得到以下错误: 2019-03-08 12:45:44[scrapy.core.scraper]错误:Spider必须返回请求、BaseItem、dict或None,并在 如何在scrapy中使用列表理解获得一些链接 带有循环的生成器在每次调用时都

我已经用python编写了一个脚本,使用scrapy在向某个url发出post请求后从response获取链接。当我尝试使用下面的脚本时,链接是完美的

工作模式:

然而,我的意图是使用列表理解来达到同样的效果,但是我得到了一些错误

使用列表理解:

我得到以下错误:

2019-03-08 12:45:44[scrapy.core.scraper]错误:Spider必须返回请求、BaseItem、dict或None,并在
如何在scrapy中使用列表理解获得一些链接


带有循环的生成器在每次调用时都返回一个
dict

yield {"result_url":response.urljoin(item)}
但是您的列表理解返回一个字符串列表。我不知道你为什么想在这里理解列表:你的生成器更容易理解(事实表明,你已经让它工作了,并且列表理解有问题),但是如果你坚持这样做,你需要的是一个
dict
的列表,而不是字符串,比如

return [{"result_url":response.urljoin(item)} for items in response.css("dl.club-item") for item in items.css("dd a[data-toggle='popover']::attr('data-url')").getall()]
但请不要这样做。记住可读性很重要。你的生成器是可读的,你的一行程序不是

2019-03-08 12:45:44 [scrapy.core.scraper] ERROR: Spider must return Request, BaseItem, dict or None, got 'str' in <POST http://www.aftnet.be/MyAFT/Clubs/SearchClubs>
yield {"result_url":response.urljoin(item)}
return [{"result_url":response.urljoin(item)} for items in response.css("dl.club-item") for item in items.css("dd a[data-toggle='popover']::attr('data-url')").getall()]