python - Scrapy ItemLoader數(shù)據(jù)清洗疑問
問題描述
在使用scrapy抓取數(shù)據(jù)時(shí),利用itemloader這個(gè)類,使用selector取出的值為空時(shí),進(jìn)入scrapy.Field()里調(diào)用filter(),selector取值不為空的確返回'有值',如果selector取出[]或'',那么value進(jìn)入filter()之后,并不會返回'無值'
def filter(value): if value:return '有值' else:return '無值' # 下面就簡寫了,熟悉的應(yīng)該能看的懂 scrapy.Field(filter())
有什么辦法將抓取為空的值,經(jīng)過filyer()之后變成'無值'
問題解答
回答1:謝邀~不太了解Scrapy,所以題主這個(gè)我不太好說我用PHP自己寫的爬蟲大體思路是:1.先是根據(jù)正則和一些循環(huán),把要收集的頁面放到隊(duì)列里,按類別分類,例如分頁的列表頁一個(gè)隊(duì)列,列表里的數(shù)據(jù)內(nèi)容頁一個(gè)隊(duì)列。2.然后利用xpath來爬取相關(guān)內(nèi)容頁的數(shù)據(jù),爬取的過程中對一些爬取到的數(shù)據(jù)進(jìn)行如題主所需的那樣進(jìn)行處理。3.組裝數(shù)據(jù),按照自己所需的標(biāo)準(zhǔn)保存數(shù)據(jù)。
大體就是這樣,我絕對大部分爬蟲框架也大概都是這種思路吧,無非是在此基礎(chǔ)上增加了,反爬機(jī)制,多線程,多進(jìn)程,增量爬取等等功能。所以,題主找到你這個(gè)框架的爬取數(shù)據(jù)那里進(jìn)行處理或組裝數(shù)據(jù)的地方進(jìn)行處理都行。
相關(guān)文章:
1. html5 - 有可以一次性把所有 css外部樣式轉(zhuǎn)為html標(biāo)簽內(nèi)style=" "的方法嗎?2. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?3. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無論屏幕和分辨率怎么變化;div位置始終不變4. html - vue項(xiàng)目中用到了elementUI問題5. python - 如何判斷爬蟲已經(jīng)成功登陸?6. javascript - 求解答:實(shí)例對象調(diào)用constructor,此時(shí)constructor內(nèi)的this的指向?7. javascript - 這不是對象字面量函數(shù)嗎?為什么要new初始化?8. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風(fēng)格檢查怎么辦。。。9. javascript - 有什么比較好的網(wǎng)頁版shell前端組件?10. javascript - [js]為什么畫布里不出現(xiàn)圖片呢?在線等
