【scrapy】爬蟲的時候總在提示 KeyError: 'novelLabel'


調試的時候總是提示 KeyError: 'novelLabel'然后決定斷點調試一下,

在def parse_book_list(self, response):方法下,添加print(response)並添加斷點,查看這里的值,發現<200 http://yunqi.qq.com/bk/so2/n30p2>這個沒有錯就是列表的頁面,運行后面的代碼。

發現到了pipelines.py里的def process_item(self,item,spider):中的item值居然是這樣:

{'novelAuthor': u'\u521d\u7136\u513f',
'novelId': u'book_21848714',
'novelImageUrl': None,
'novelLink': u'http://yunqi.qq.com/bk/xhyq/21848714.html',
'novelName': u'\u6597\u9f99\u6218\u58eb\u4e4b\u6218\u58eb\u5f52\u6765',
'novelStatus': u'\u8fde\u8f7d\u4e2d',
'novelType': u'[\u5f02\u4e16\u5927\u9646]',
'novelUpdateTime': u'18-08-05 13:11',
'novelWords': u'10555'}

難怪會報KeyError: 'novelLabel' 因為這里的item根本沒有novelLabel值啊。

再回看書本里的代碼,發現其實這個寫錯了:

def process_item(self,item,spider):
if isinstance(item,YunqiBookDetailItem):
self._process_booklist_item(item)
else:
self._process_bookDetail_item(item)
return item
由於寫了YunqiBookDetailItem所以就跳到else分支里,把列表頁的數據使用_process_bookDetail_item這個清洗詳細頁面的方法去處理了。
改為YunqiBookListItem之后就沒有再報這個錯誤!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM