亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在scrapy中使用列表理解來獲取一些鏈接

無法在scrapy中使用列表理解來獲取一些鏈接

30秒到達戰場 2021-11-30 10:44:57
我已經使用scrapy在python中編寫了一個腳本,以便在向某個網址發出發布請求后從響應中獲取鏈接。當我嘗試使用以下腳本時,鏈接完全通過。工作一:import scrapyfrom scrapy.crawler import CrawlerProcessclass AftnetSpider(scrapy.Spider):    name = "aftnet"    base_url = "http://www.aftnet.be/MyAFT/Clubs/SearchClubs"    def start_requests(self):        yield scrapy.FormRequest(self.base_url,callback=self.parse,formdata={'regions':'1,3,4,6'})    def parse(self,response):        for items in response.css("dl.club-item"):             for item in items.css("dd a[data-toggle='popover']::attr('data-url')").getall():                yield {"result_url":response.urljoin(item)}if __name__ == "__main__":    c = CrawlerProcess({        'USER_AGENT': 'Mozilla/5.0',    })    c.crawl(AftnetSpider)    c.start()但是,我的意圖是使用列表理解來實現相同的目的,但我遇到了一些錯誤。使用列表理解:def parse(self,response):    return [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>如何使用scrapy中的列表理解來獲取一些鏈接?
查看完整描述

1 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

帶有循環的生成器dict在每次調用時都返回一個:

yield {"result_url":response.urljoin(item)}

但是您的列表理解會返回一個字符串列表。我不知道你為什么想要一個列表理解:你的生成器更容易理解(正如你已經讓它工作并且在列表理解上遇到問題的事實所示)但是如果你堅持這樣做,你需要的是一個dicts非字符串列表,比如

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()]

但請不要那樣做。請記住,可讀性很重要。你的發電機是可讀的,你的單線不是。


查看完整回答
反對 回復 2021-11-30
  • 1 回答
  • 0 關注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號