準備一個定時任務
準備一個運行類
將之前封裝的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");
寫錯地方
可以獲取數據了
閱讀更多 分享電腦學習 的文章