經過上一期爬取豆瓣影評成功后,感覺爬蟲還不錯,於是想爬點圖片來玩玩...
搜狗圖片地址:https://pic.sogou.com/?from=category
先上最后成功的源碼(在D盤下創建souGouImg文件夾,直接直接代碼即可獲取):
import requests import urllib import json from fake_useragent import UserAgent def getSougouImag(category,length,path): n = length cate = category imgs_url = [] #定義空列表,用於保存圖片url m = 0 #用於顯示圖片數量 url = 'https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category='+cate+'&tag=%E5%85%A8%E9%83%A8&start=0&len='+str(n) headers = {'user-agent':UserAgent().random} #設置UA f = requests.get(url,headers=headers) #發送Get請求 print(f.status_code) js = json.loads(f.text) js = js['all_items'] for j in js: imgs_url.append(j['thumbUrl']) for img_url in imgs_url: print('***** '+str(m)+'.jpg *****'+' Downloading...') urllib.request.urlretrieve(img_url,path+str(m)+'.jpg') #下載指定url到本地 m += 1 print('Download complete!') getSougouImag('壁紙',500,r'D:\souGouImg/')
效果圖:
下面開始介紹作為一個新手的爬蟲步驟...
1、首先打開網頁查看HTML源碼
先按F12打開調試界面—>右擊圖片—>點擊檢查
會出現如下圖紅框中的信息,不難看出,此圖片的url就是img標簽中src屬性的值。
如此簡單?那直接獲取src屬性的值,再進行下載不就完全ok了?
話不多說,開干。
from bs4 import BeautifulSoup import requests from fake_useragent import UserAgent #ua庫 url = 'https://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD&from=home#%E5%85%A8%E9%83%A8%269' headers = {'user-agent':UserAgent().random} #設置UA f = requests.get(url,headers=headers) #發送Get請求 print(f.status_code) #打印狀態碼 soup = BeautifulSoup(f.text,'lxml') #用lxml解析器解析該網頁的內容 print(soup.select('img')) #篩選出所有img的標簽,並打印其屬性和內容
代碼執行結果如下:
發現打印出的html並不是與網頁中的一致,所有考慮,這根本不是圖片的源url,於是推測圖片是動態的,繼續查找... 也是百度到了某個大佬的文章,才挖掘出以下搜尋方法。
2、點擊NetWork—>點擊XHR—>然后往下滾輪,使它加載出新的圖片—>點擊新加載出來的圖片—>再點擊右側的Preview
發現Preview下的內容為json格式的
發現all_items,點擊它發現有0.....眾多數字,再點開發現有許多url,粘貼到瀏覽器中查看,發現這些都是圖片的url(心中狂喜)
找到圖片的真實URL,問題也就變得簡單了。詳情還是請看代碼注釋吧~