2018-8-31 seo達(dá)人
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
圖片三個(gè)網(wǎng)站的圖片搜索結(jié)果進(jìn)行爬取和下載。
首先通過爬蟲過程中遇到的問題,總結(jié)如下:
1、一次頁面加載的圖片數(shù)量各個(gè)網(wǎng)站是不定的,每翻一頁就會(huì)刷新一次,對于數(shù)據(jù)量大的爬蟲幾乎都需要用到翻頁功能,有如下兩種方式:
1)通過網(wǎng)站上的網(wǎng)址進(jìn)行刷新,例如必應(yīng)圖片:
2)通過selenium來實(shí)現(xiàn)模擬鼠標(biāo)操作來進(jìn)行翻頁,這一點(diǎn)會(huì)在Google圖片爬取的時(shí)候進(jìn)行講解。
2、每個(gè)網(wǎng)站應(yīng)用的圖片加載技術(shù)都不一樣,對于靜態(tài)加載的網(wǎng)站爬取圖片非常容易,因?yàn)槊繌垐D片的url都直接顯示在網(wǎng)頁源碼中,找到每張圖片對應(yīng)的url即可使用urlretrieve()進(jìn)行下載。然而對于動(dòng)態(tài)加載的網(wǎng)站就比較復(fù)雜,需要具體問題具體分析,例如google圖片每次就會(huì)加載35張圖片(只能得到35張圖片的url),當(dāng)滾動(dòng)一次后網(wǎng)頁并不刷新但是會(huì)再次加載一批圖片,與前面加載完成的都一起顯示在網(wǎng)頁源碼中。對于動(dòng)態(tài)加載的網(wǎng)站我推薦使用selenium庫來爬取。
對于爬取圖片的流程基本如下(對于可以通過網(wǎng)址實(shí)現(xiàn)翻頁或者無需翻頁的網(wǎng)站):
1. 找到你需要爬取圖片的網(wǎng)站。(以必應(yīng)為例)
2. 使用google元素檢查(其他的沒用過不做介紹)來查看網(wǎng)頁源碼。
3. 使用左上角的元素檢查來找到對應(yīng)圖片的代碼。
4. 通過觀察找到翻頁的規(guī)律(有些網(wǎng)站的動(dòng)態(tài)加載是完全看不出來的,這種方法不推薦)
從圖中可以看到標(biāo)簽div,class=’dgControl hover’中的data-nexturl的內(nèi)容隨著我們滾動(dòng)頁面翻頁first會(huì)一直改變,q=二進(jìn)制碼即我們關(guān)鍵字的二進(jìn)制表示形式。加上前綴之后由此我們才得到了我們要用的url。
5. 我們將網(wǎng)頁的源碼放進(jìn)BeautifulSoup中,代碼如下:
我們得到的soup是一個(gè)class ‘bs4.BeautifulSoup’對象,可以直接對其進(jìn)行操作,具體內(nèi)容自行查找。
首先選取我們需要的url所在的class,如下圖:
波浪線是我們需要的url。
我們由下面的代碼得到我們需要的url:
最后調(diào)用urlretrieve()函數(shù)下載我們得到的圖片url,代碼如下:
這里需要強(qiáng)調(diào)是像前面的打開網(wǎng)址和現(xiàn)在的下載圖片都需要使用try except進(jìn)行錯(cuò)誤測試,否則出錯(cuò)時(shí)程序很容易崩潰,大大浪費(fèi)了數(shù)據(jù)采集的時(shí)間。
以上就是對單個(gè)頁面進(jìn)行數(shù)據(jù)采集的流程,緊接著改變url中{1}進(jìn)行翻頁操作繼續(xù)采集下一頁。
數(shù)據(jù)采集結(jié)果如下:
有問題請留言。
藍(lán)藍(lán)設(shè)計(jì)( www.wnxcall.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。藍(lán)藍(lán)設(shè)計(jì)的小編 http://www.wnxcall.com