如何用爬蟲爬取精美的圖片!

起因: 因爲要做和圖像識別有關的東西,需要很多的圖片,但我這個人很懶,又不想自己動手找。於是乎,我就打起了爬蟲的主意。我開始找網上的各種爬蟲教程和一些經典案例,但是我沒有找到一個即簡單完整的爬蟲程序。沒辦法,我只有自己動手啦。如果你和我一樣,想快速學會爬蟲,編寫出易於理解、完整且簡單的小爬,你可以繼續往下看看。
準備工作:
1、爬取的網站:wallhaven:https://wallhaven.cc/ 【該網站的圖片高清幽美、令人讚歎,兩個字"極好"】
類似於下面這張圖,是不是還不錯?
在這裏插入圖片描述
2、涉及到的學習內容
編寫語言:python 【附上官網教程
python包:
(1)BeautifulSoup:BeautifulSoup4和 lxml 一樣,Beautiful Soup 也是一個HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 數據。
(2)requests:作爲用戶角色,請求頁面。
分析爬取內容:
1、分析主頁面
主界面可以使用搜索,若想篩選出有霧的圖像,可直接在搜索框中查找"FOG"
跳轉頁面後觀察規律,url = https://wallhaven.cc/search?q=FOG&page=%s"%(i)是這樣的。q是查詢的參數,page表示第幾頁。
2、分析源代碼的形式
目的很明確,需要高清的圖片,因此,需要點擊對應的圖片,跳轉到高清的圖片頁面中,然後再提取高清圖片。
3、獲取代理對象
User-Agent:通過Headers找到。
下面通過具體的代碼,來解釋整個流程。

from bs4 import BeautifulSoup
import requests
#用戶代理,作爲用戶的角色訪問網站
gHeads = {
    "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36"
}
#整個for循環用於控制圖片展示頁面(第幾頁)
for i in range(5,20):
    url = "https://wallhaven.cc/search?q=FOG&page=%s"%(i)
    print(url)
    html = requests.get(url,headers=gHeads)#請求頁面
    html = html.content#獲取源碼
    soup = BeautifulSoup(html, 'lxml')#對界面進行解析
    href_all = soup.find_all( 'a',{"class": "preview"})#找到對應的a,且其class=preview
    for href in href_all:#打開高清圖片的新頁面
        href_url = href['href']#找到對應的href屬性值
        #重複上述的源碼獲取和頁面解析
        html4 = requests.get(href_url,headers=gHeads).content
        soup4 = BeautifulSoup(html4, 'lxml')
        img4 = soup4.find( 'img',{"id": "wallpaper"})#找到img標籤,且id = wallpaper
        urlimg = img4['data-cfsrc'] #獲取屬性值
        #將圖片下載到本地
        r = requests.get(urlimg, stream=True)
        image_name = urlimg.split('/')[-1]#獲取圖片名
        with open('F:/Image/%s' % image_name, 'wb') as f:#Image文件必須存在
            for chunk in r.iter_content(chunk_size=128):
                f.write(chunk)
        print('Saved %s' % image_name)
    print("end.....................")    

部分結果展示:
在這裏插入圖片描述
上面的過程較爲簡單,建議小夥伴們先測試一下,看效果,然後一步一步來理解。


若是有不理解的地方,可以在下方留言,我看到後會及時回覆的。有問題咱一起解決,共同進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章