1判斷動態加載
檢查流程如下:
1.1 瀏覽器檢查,觀察network->XHR,確定是否是動態頁面(如果隨着下拉頁面,項目不斷增加就說明是動態頁面)。
1.2. 確定是動態頁面以后,觀察任意幾個請求項目(Network->XHR)中的Request url (network->XRH->headers—> Request headers-->referer)中的鏈接有什么不同,也就是觀察這些參數有什么不同和相同的(參數在headers-> query string parameters中)
1.3. 想辦法構造出這個請求url,獲取到目標 或者 動態實際頁面的HTML代碼文件
1.4. 然后就是要解析獲取的HTML代碼了,於是先觀察一下 Network->XRH->preview中的信息,看看要提取的是哪些
因此:
通過觀察1.2中參數不同的鏈接,找到真實加載的鏈接。所以第一步先構造出這樣的一個url
from urllib.parse import urlencode
params={
'page': str(page),
'per_page': '12'
}
base_url='https://unsplash.com/napi/photos?'
url = base_url + urlencode(params)
response=requests.get(url,headers=headers,verify=False) #自行構造headers
上述構造使得我們獲得我們需要的資源,然后進行提取返回內容里面的id,構造真實的下載鏈接。通過fiddler抓取點擊圖片下載按鈕后(不能確定是哪個進程,就多點擊幾個下載按鈕,就好分辨哪類表示是發送下載鏈接的進程),可以知道發送的獲取圖片的地址是哪個(爬蟲時候構造這個鏈接就行了)。如下圖,點擊下載按鈕后,GET :/photos/WvkdIJh3GJ0/download?force=true 也就是代表https://unsplash.com//photos/WvkdIJh3GJ0/download?force=true就可以進行下載了。
於是我們只要獲取 上步操作response中的id進行構造下載鏈接,就可以實現下載了。
2.基於爬取unsplash.com爬取圖片的實戰
https://github.com/jacker2019/pythonpractice/blob/master/爬蟲/爬取AJax渲染的動態圖片網站unsplash.py
3.關於json的小筆記
如果使用filter抓包的話,很明顯會發現json格式的數據,json格式數據,實際是字典套字典的具有結構的這么一種數據格式
碰到json格式,想把它轉換為python可以處理的數據格式
json.load()與json.loads()轉化為python數據類型
json.dump()與json.dumps()轉化為json類型。
注意:有s的表示對象是json字符串,沒有s表示對象是json類文件對象
寫在最后
小白筆記,有錯誤或不當之處,還請大佬們指正!