歡迎光臨
每天分享高質量文章

Python爬取爐石傳說原畫及卡牌抓取

作者:丨像我這樣的人丨

來自:https://www.jianshu.com/p/e386f549d17a

爐石傳說原畫鏈接:http://news.4399.com/gonglue/lscs/kptj/

該網站通過點擊查看更多加載新的內容


本打算使用Selenium模擬點擊獲取圖片信息 


嘗試發現原始碼中 該按鈕並無相應的跳轉鏈接



這不應該啊 沒有相應的跳轉鏈接 點擊後是如何加載新的圖片?


後來瀏覽整體網站原始碼後 發現把問題想複雜 根本不需要模擬點擊查看更多



網站其實已經加載了所有的卡牌原畫 只是之後的原畫做了隱藏處理預設不展示  style=display


點擊查看更多後 顯示原畫


那麼只需使用requests獲取網頁原始碼


用BeautiSoup/正則運算式/pyQuery解析元素 遍歷相應img的url 即可下載


教訓:爬蟲前 不要根據網頁所對的操作實施相應的代碼爬取 不要有這樣的思維定式 首先要做的是先大體瀏覽分析整個網頁的原始碼  有的可能直接寫在原始碼或json或js中 無需再加工

爐石傳說卡牌鏈接:http://cha.17173.com/hs/

該網站通過下拉右邊的滾動條不斷加載新的卡牌

與上一個網站不同  上一個網站一次性寫入了所有卡牌 只不過做了隱藏處理

該網站是通過js動態加載渲染出的卡牌 直接獲取原始碼 無法得到所有卡牌信息

那麼就用selenium模擬下拉滾動條(selenium簡直居家必備之神器)

使用selenium執行js腳本 每次執行下拉1000個單位滾動條 執行90次

為什麼是90次 測試出來的 大概90次拉到底

註意:這裡要增加1~3秒的暫停時間 用於網頁渲染


第一次沒有設置停留時間 無法獲取新的資料  懷疑自己 懷疑人生

經前端/後端好友L君的提示 需增加暫停時間 這樣才能獲得加載渲染後的資料

browser.page_source便可獲得動態加載的所有資料

有了資料 之後就很簡單 正則匹配獲取相應url下載即可

最後獲得了800張原畫 1324張卡牌




既然獲得了這麼多卡牌和原畫 不能浪費 利用起來 拼圖!

致敬下玩了好幾年的爐石

順手拼一下女神

完畢!

原始碼獲取地址:https://github.com/sadjjk/Hearth-Stone-Spider

玩過這款游戲的點個贊?


編號514,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

Web開發

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演算法與資料結構、黑客技術與網絡安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

赞(0)

分享創造快樂