02.25 爬蟲學習之案例開發獲取搜索頁面數據

準備一個定時任務

準備一個運行類

爬蟲學習之案例開發獲取搜索頁面數據

將之前封裝的HttpClient拿過來,放到一個utils包中

爬蟲學習之案例開發獲取搜索頁面數據

編寫定時類的定時方法

爬蟲學習之案例開發獲取搜索頁面數據

我們在京東中搜索手機,可以看到URL

爬蟲學習之案例開發獲取搜索頁面數據

點擊下一頁,觀察URL的變化

爬蟲學習之案例開發獲取搜索頁面數據

其中page這個參數,我們發現

Page=1是第一頁

Page=3是第二頁

Page=5是第三頁

這就是頁碼的判斷參數

我們開始編寫代碼

爬蟲學習之案例開發獲取搜索頁面數據

寫一個循環,循環頁碼(8示例數據,學習為主)

爬蟲學習之案例開發獲取搜索頁面數據

在開發者工具中查看下頁面結構,下面這些就是頁面中的商品

爬蟲學習之案例開發獲取搜索頁面數據

可以找到sku和spu

爬蟲學習之案例開發獲取搜索頁面數據

那我們來抓取這些數據

先準備一個HttpClient

爬蟲學習之案例開發獲取搜索頁面數據

搜索頁面(這個地方循環的初始值變為1,之前寫錯了)

爬蟲學習之案例開發獲取搜索頁面數據

解析頁面

創建一個解析方法,這個方法完成頁面解析

爬蟲學習之案例開發獲取搜索頁面數據

基本思路是:首先獲取spu,然後根據spu獲取sku

分析頁面先獲取這個div,id是goodsList,然後根據這個div找到子元素ul,然後找到li

爬蟲學習之案例開發獲取搜索頁面數據

所以獲取代碼

爬蟲學習之案例開發獲取搜索頁面數據

獲取spu

爬蟲學習之案例開發獲取搜索頁面數據

獲取sku

分析頁面,找到ps-item

爬蟲學習之案例開發獲取搜索頁面數據

所以代碼

爬蟲學習之案例開發獲取搜索頁面數據

其中sku的值

爬蟲學習之案例開發獲取搜索頁面數據

所以代碼

爬蟲學習之案例開發獲取搜索頁面數據

然後我們將數據保存到數據庫中

爬蟲學習之案例開發獲取搜索頁面數據

根據sku查詢商品數據,如果存在,後續數據就不用查詢解析了

爬蟲學習之案例開發獲取搜索頁面數據

設置完商品spu,繼續解析商品詳情url

爬蟲學習之案例開發獲取搜索頁面數據

之前我們發現這個是由sku拼接成的

爬蟲學習之案例開發獲取搜索頁面數據

代碼,完成拼接

爬蟲學習之案例開發獲取搜索頁面數據

繼續獲取商品的圖片,這個地方注意,在開發者工具和源代碼中看到的不一樣,所以代碼要經常調試,開發者中是src而源碼中是data-lazy-img,我們使用data-lazy-img

爬蟲學習之案例開發獲取搜索頁面數據

爬蟲學習之案例開發獲取搜索頁面數據

代碼

爬蟲學習之案例開發獲取搜索頁面數據

其中因為圖片大小的問題,需要做一個替換

這個圖片很小

爬蟲學習之案例開發獲取搜索頁面數據

改成1就可以了

爬蟲學習之案例開發獲取搜索頁面數據

所以代碼替換下,最後保存圖片

爬蟲學習之案例開發獲取搜索頁面數據

獲取商品的價格

因為價格選中不同的價格不同

爬蟲學習之案例開發獲取搜索頁面數據

爬蟲學習之案例開發獲取搜索頁面數據

我們調出開發者工具看一下,發現有新的請求

爬蟲學習之案例開發獲取搜索頁面數據

所以要重新請求,我們看一下

爬蟲學習之案例開發獲取搜索頁面數據

訪問下,可以得到數據

爬蟲學習之案例開發獲取搜索頁面數據

簡化下Url

爬蟲學習之案例開發獲取搜索頁面數據

代碼實現,獲取到Json數據

爬蟲學習之案例開發獲取搜索頁面數據

解析Json

爬蟲學習之案例開發獲取搜索頁面數據

解析數據

爬蟲學習之案例開發獲取搜索頁面數據

獲取商品標題,先進入詳情頁獲取標題

爬蟲學習之案例開發獲取搜索頁面數據

代碼

爬蟲學習之案例開發獲取搜索頁面數據

這是獲取完頁面了,接下來分析裡面的內容

爬蟲學習之案例開發獲取搜索頁面數據

所以代碼

爬蟲學習之案例開發獲取搜索頁面數據

設置創建和更新時間

爬蟲學習之案例開發獲取搜索頁面數據

終於可以保存了

爬蟲學習之案例開發獲取搜索頁面數據

之前忘了補充事務註解了

爬蟲學習之案例開發獲取搜索頁面數據

調用方法

爬蟲學習之案例開發獲取搜索頁面數據

調試下程序,看是否有錯誤的地方

發現總是訪問不到,顯示頁面信息

爬蟲學習之案例開發獲取搜索頁面數據

所以設置請求頭消息User-Agent模擬瀏覽器

httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0");

爬蟲學習之案例開發獲取搜索頁面數據

寫錯地方

爬蟲學習之案例開發獲取搜索頁面數據

爬蟲學習之案例開發獲取搜索頁面數據

爬蟲學習之案例開發獲取搜索頁面數據

可以獲取數據了

爬蟲學習之案例開發獲取搜索頁面數據


分享到:


相關文章: