首先堆糖網是一個美圖壁紙興趣社區,有大量的美女圖片
今天咱們實現搜索關鍵字爬取堆糖網上相關的美圖。
固然咱們還能夠實現多線程爬蟲,加快爬蟲爬取速度
html
值得注意的是url當中是不能有漢字的,因此真正的url是這樣的:python
https://www.duitang.com/search/?kw=美女&type=feed
思路:json
import urllib.parse label = '美女' label = urllib.parse.quote(label) # 輸出:%E7%BE%8E%E5%A5%B3
首先,這個網站的數據是瀑布流式的加載方式。api
瀑布流舉例說明:你去一個飯店,直接開口要十碗燴麪,這個時候老闆開始下面給你吃😏。而後你發現當你吃完第一碗麪,你就吃不下了。這個時候,剩下的面就算白作了。因此,下次你在去飯店,仍是直接開口要十碗麪,這時,老闆聰明瞭,下一碗麪,你吃一碗,你還須要,就在去下面。這樣就不會浪費。瀏覽器
針對這種數據加載,須要抓包:
服務器
import urllib.parse import json import requests import jsonpath
we_data = requests.get(url).text
由於是json文件,因此直接用jsonpath工具提取數據多線程
# 類型轉換 html = json.loads(we_data) photo = jsonpath.jsonpath(html,"$..path") print(photo)
獲得圖片的連接工具
num = 0 for i in photo: a = requests.get(i) with open(r'tupian\{}.jpg'.format(num),'wb') as f: # content 二進制流 f.write(a.content) num += 1
因此,以此爲動力,又實現了翻頁,下面是簡單的所有代碼(代碼爲了零基礎小白看懂,大神勿噴)jsonp
import urllib.parse import json import requests import jsonpath url = 'https://www.duitang.com/napi/blog/list/by_search/?kw={}&start={}' label = '美女' # 關鍵字 label = urllib.parse.quote(label) num = 0 # 翻頁 24的間隔 for index in range(0,2400,24): u = url.format(label,index) we_data = requests.get(u).text html = json.loads(we_data) photo = jsonpath.jsonpath(html,"$..path") # 遍歷每頁的圖片連接 for i in photo: a = requests.get(i) # wb 二進制寫入 with open(r'tupian\{}.jpg'.format(num),'wb') as f: # content 二進制流 f.write(a.content) num +=1
PS:
問題能夠評論區提出
網站