程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python爬蟲入門案例day05:Pexels

編輯:Python

python爬蟲入門案例day05:Pexels

目標網站

Pexels

目標網址

https://www.pexels.com/zh-cn/search/%E6%97%A5%E8%90%BD/

開發環境

1、window11
2、python3.7
3、PyCharm Community Edition 2021.2.1
4、雙核浏覽器
5、浏覽器自帶開發者工具

網站分析

在下拉網頁的過程中發現,會不斷加載出新的圖片,說明該網頁為動態網頁,那我們可以初步猜想圖片的鏈接存放在通過Ajax請求的網絡數據包中,抓包過程如圖:

數據包url規律分析

1、https://www.pexels.com/zh-cn/api/v3/search/photos?page=10&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all
2、https://www.pexels.com/zh-cn/api/v3/search/photos?page=11&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all
3、https://www.pexels.com/zh-cn/api/v3/search/photos?page=12&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all
4、https://www.pexels.com/zh-cn/api/v3/search/photos?page=13&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all
5、https://www.pexels.com/zh-cn/api/v3/search/photos?page=14&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all

經過對比發現,只有參數page在變化,且從1開始隔間為1開始遞增,可以刪除的參數color、size、orientation

請求頭分析

先將請求頭內容照如圖所寫,發現返回報錯:{‘error_messages’: [‘Bad API credentials.’]}

原因是因為網站服務器對gei請求的參數進行了校驗,但是請求頭中沒有找到密鑰,於是修改請求頭如下圖:

響應數據結構分析


如上圖一眼可以看出,響應數據格式為json數據格式,可以使用jsonpath對json數據進行解析,方便簡單且快速

源代碼

下載的圖片

知識點總結

1、requests模塊的get方法就是模擬浏覽器發起get網絡請求,得到服務器返回響應數據,headers中添加了user-agent用來將程序偽裝成浏覽器,user-agent是浏覽器標識,一般服務器都會檢查請求頭中的user-agent字段的內容;
2、響應數據是字符串格式,但是看起來和json數據一樣,使用json.loads()將str格式數據轉換為json格式數據;
3、使用jsonpath.jsonpath()方法來對json格式數據進行解析提取出圖片名稱和圖片鏈接;
4、為了降低爬蟲程序對目標服務器造成的壓力,要在程序中設置強制隨機休眠time.sleep(random.randint(3, 5));

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved