python - Scrapy ItemLoader數(shù)據(jù)清洗疑問(wèn)
問(wèn)題描述
在使用scrapy抓取數(shù)據(jù)時(shí),利用itemloader這個(gè)類(lèi),使用selector取出的值為空時(shí),進(jìn)入scrapy.Field()里調(diào)用filter(),selector取值不為空的確返回'有值',如果selector取出[]或'',那么value進(jìn)入filter()之后,并不會(huì)返回'無(wú)值'
def filter(value): if value:return '有值' else:return '無(wú)值' # 下面就簡(jiǎn)寫(xiě)了,熟悉的應(yīng)該能看的懂 scrapy.Field(filter())
有什么辦法將抓取為空的值,經(jīng)過(guò)filyer()之后變成'無(wú)值'
問(wèn)題解答
回答1:謝邀~不太了解Scrapy,所以題主這個(gè)我不太好說(shuō)我用PHP自己寫(xiě)的爬蟲(chóng)大體思路是:1.先是根據(jù)正則和一些循環(huán),把要收集的頁(yè)面放到隊(duì)列里,按類(lèi)別分類(lèi),例如分頁(yè)的列表頁(yè)一個(gè)隊(duì)列,列表里的數(shù)據(jù)內(nèi)容頁(yè)一個(gè)隊(duì)列。2.然后利用xpath來(lái)爬取相關(guān)內(nèi)容頁(yè)的數(shù)據(jù),爬取的過(guò)程中對(duì)一些爬取到的數(shù)據(jù)進(jìn)行如題主所需的那樣進(jìn)行處理。3.組裝數(shù)據(jù),按照自己所需的標(biāo)準(zhǔn)保存數(shù)據(jù)。
大體就是這樣,我絕對(duì)大部分爬蟲(chóng)框架也大概都是這種思路吧,無(wú)非是在此基礎(chǔ)上增加了,反爬機(jī)制,多線(xiàn)程,多進(jìn)程,增量爬取等等功能。所以,題主找到你這個(gè)框架的爬取數(shù)據(jù)那里進(jìn)行處理或組裝數(shù)據(jù)的地方進(jìn)行處理都行。
相關(guān)文章:
1. [python2]local variable referenced before assignment問(wèn)題2. 求救一下,用新版的phpstudy,數(shù)據(jù)庫(kù)過(guò)段時(shí)間會(huì)消失是什么情況?3. mysql - 如何在有自增id的情況下,讓其他某些字段能不重復(fù)插入4. python小白,關(guān)于函數(shù)問(wèn)題5. django - Python error: [Errno 99] Cannot assign requested address6. angular.js - 百度支持_escaped_fragment_嗎?7. java - 線(xiàn)上應(yīng)用,如果數(shù)據(jù)庫(kù)操作失敗的話(huà)應(yīng)該如何處理?8. node.js - win 下 npm install 遇到了如下錯(cuò)誤 會(huì)導(dǎo)致 無(wú)法 run dev么?9. python小白 關(guān)于類(lèi)里面的方法獲取變量失敗的問(wèn)題10. Python2中code.co_kwonlyargcount的等效寫(xiě)法
