9.5 Scrapy專案管道爬取58實戰程式碼
阿新 • • 發佈:2019-01-25
spider檔案:
yield函式 ,這個函式沒有結束,還可以繼續返回,這裡千萬不能return,return就結束了1條資料。
這才yield出去到管道,才管道開始了。
yield item是yield到管道,yield request是yield到排程器。
管道檔案pipline.py檔案
天生有一個管道,但是這個管道里面什麼都沒有。之前講過管道有4個函式。
首先開啟一個檔案,print(開啟檔案了)關閉一個,print(關閉檔案了),中間是管道
問題來了如何寫入檔案:
如何把一個個物件寫入檔案。涉及到序列化,即把物件變成一個文字。如何把dictionary寫入到文字中呢?經典方案是import jaon,把它變成一個json的字串,然後存起來就ok了。
即:序列號函式json.dumps(),item其實就是一個dictionaty,但是離真正還是差一點。
於是json.dumps(dic(item)讓其變成真正的dic,並把其放入line變數中,即line=json.dumps(dic(item)。
這其中有個問題,容易寫成一坨,就是你不斷地這麼寫只是在尾部追加,沒有換行符,
這時候我們要新增一個換行的機制,並把其format貼上進來
然後再寫到檔案裡面
啟用管道,在setting檔案中
解封即把紅框的註釋去掉,注意改變管道的順序補上改前邊的檔名,而是改動後邊的數字300
讓其執行奔跑
手動建立main檔案,並且把執行命令寫進去,其中有個是檔名,然後debug執行即可。
課後作業:
- 選4種選擇器中的一種對其高階語法學習
- 學習和掌握正則表示式的用法
- 嘗試使用高階語法解析一些頁面
- CSS、Xpath和正則表示式:可以前往選擇器(Selectors),學習更加全面的選擇器用法
- 正則表示式:正則表示式是程式猿的必備技能,不僅在scrapy中可以用到,清洗資料、SQL資料庫提取資料等都可以用到,所以一定要多加學習:正則表示式
- 谷歌瀏覽器具有一款拓展外掛叫“XPath Helper”,可以在瀏覽器頁面直接寫Xpath
query,即時顯示所寫的Xpath選擇到的結果,非常好用,可以自行下載
- 有能力的同學可以去GitHub瀏覽Scrapy的原始碼,更深入地理解Scrapy的使用和操作方法
- 有興趣的同學可以嘗試去爬取京東的商品,這裡有一個京東爬蟲開源的專案,大家可以參考一下