pyquery获取不到网页完整源代码_python动态网页爬取:爬取pexel上的图片
前言
同樣的,我們在寫一個爬蟲前要明確自己想要爬取的東西是什么,明確下載目標數據在瀏覽器的操作如何
對于動態網頁的爬取,在網頁地址不變的情況下,我們首先要明確如何獲取AJAX請求
首先我們看看這個網站pexel
打開頁面后再Chrome瀏覽器中選擇“更多工具”→“開發者工具”→“Network”→XHR
1、看到Name那一欄中,找到每一次鼠標下滑瀏覽器發出的請求,任意點開一個請求;
2、在右側的Headers下拉
3、找到Query String Parameter這一欄,記住這里的數據
等下用于構造請求
接下來,在腦海里明確一下下載圖片的步驟
我們首先點開一張圖(要獲得這個圖的地址)→選擇下載圖片→獲得一個.jpeg結尾或者.png結尾的網頁,最后保存圖片
查看網頁源代碼可以發現在每一次動態生成的頁面中我們就可以直接獲取圖的下載地址
找到它,發現前綴是"https://images.pexels.com/photos/"+jpeg或者png
這時候我們可以考慮到,首先我們先獲得頁面的代碼
然后通過正則表達式去搜索符合條件的圖片
但是后面可能會有重復的地方,在獲取的list中最后再用set篩選一下即可。
明確上述思路后,接下來我們開始構建爬蟲
①初始化Headers☆
這一步非常重要,不構造headers會被禁止訪問= =
headers初始化代碼如下,用于將爬蟲偽裝成瀏覽器請求,而請求用于出發特定的AJAX內容
②構造動態AJAX請求
根據上述截圖中保存的Query String Parameter參數,我們構造request請求的時候捎上Params內容
把獲取的下載圖片的link保存到一個list中
③元素的篩選
一開始調試程序的時候發現獲取的link中還有以png形式結尾的link,這里需要再對list進行二次篩選,保留可以下載圖片的link
最后還別忘了使用set把list中重復的元素刪去哦
④最后對于保存了每一張圖片的下載地址的list使用urllib.request.urlretrieve把圖片保存到指定路徑就可以啦
*pexel一開始還對每個圖片的下載地址整了反爬蟲機制,所以下載也要再構造一次headers模擬瀏覽器^_^
這一步可以單獨寫成一個函數,不過我貪方便就沒這么寫
最后貼兩張運行結果圖
控制臺的輸出:
下載到本地的壁紙
完整代碼如下:
①為了調試程序中間加了一些輸出語句
②如果要粘去直接用,記得通過打開頁面查看query string parameter修改23行代碼的seed內容!不然可能會爬不到東西
總結
以上是生活随笔為你收集整理的pyquery获取不到网页完整源代码_python动态网页爬取:爬取pexel上的图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html分页实现w3c,分页_w3csc
- 下一篇: python图像人类检测_OpenCV人