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