1. 程式人生 > >思路——根據網站鏈接爬取整個圖片網站

思路——根據網站鏈接爬取整個圖片網站

requests 方式 效率 java實現 rap html 進行 os模塊 pat

八月入職新公司,發現公司的爬蟲系統主要用Java實現的偶爾用一些python,為此又看了下Java爬蟲,順便用之前同事推薦我的美女圖片網站練手(之前推薦時候python爬蟲勉強算經驗豐富,感覺難度太低沒去爬,這次剛好拿來練手),附上網址http://www.mm131.com/,(對了,這個網站爬取要註意在請求頭中加上refer的參數,不然你會發現爬到的是百度和騰訊的圖標),在踩了幾個Java的坑後完成了頁面的爬取,但感覺接下來都是老套路,無非是按網站幾大分類循環爬取進行頁面網址拼接之類的,就想省事減少頁面分析工作,想了下可行度極高,因為網站的分類和圖片鏈接的域名都是一樣的,可以以此為過濾條件。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------思路如下:

根據該網站相關鏈接爬取整個圖片網站可行,主要有兩點要註意:

(1)url鏈接的存儲和消重;

解決方法:用布隆過濾器或直接用列表(List)進行存儲和去重,每次將爬取完畢的url存儲到列表(或布隆過濾器),並寫入到文件中進行記錄,在停止後重新爬取時直接將文件內的鏈接讀取到列表(或布隆過濾器)中即可,為了減小內存消耗,就不記錄圖片的鏈接,圖片鏈接可根據我們設定的圖片命名方式直接利用os模塊的os.path.isfile(filepath)或os.path.exisits(filepath)檢查該圖片鏈接是否在對應路徑已存在該名稱的圖片。

(2)圖片的分類和存儲

解決方法:直接根據圖片和人物分級創建文件夾存儲圖片,如mingxing(明星),chemo(車模),qipao(旗袍)。。

鏈接示例:

http://www.mm131.com/mingxing/2016.html

http://img1.mm131.me/pic/2016/1.jpg

爬取:1. 直接利用python的Scrapy框架進行分布式爬取;

2. (推薦推薦)自己寫個,用python的urllib或requests(推薦)模塊,再用上yield(生成器),簡單實現分布式盤爬取,效率更高;

3. 用Java的HttpClient(功能強,更廣泛)或Jsoup(使用簡單)。

ps:今天大致就這樣了,今天浪的太厲害,沒啥時間寫代碼了(懶),,,浪蕩的周日啊。。。

思路——根據網站鏈接爬取整個圖片網站