1. 程式人生 > >python爬蟲王者榮耀高清皮膚大圖背景故事通用爬蟲

python爬蟲王者榮耀高清皮膚大圖背景故事通用爬蟲

bin 速度 列表操作 sta 寫入文本 網絡庫 open htm 拼接

wzry-spider

python通用爬蟲-通用爬蟲爬取靜態網頁,面向小白

基本上純python語法切片索引,少用到第三方爬蟲網絡庫

這是一只小巧方便,強大的爬蟲,由python編寫

主要實現了:

1.爬取高清皮膚大圖

2.爬取所有英雄背景故事

所需的庫有

    1. requests 只用來發送請求和保存二進制文件

純python爬蟲,利用python索引切片文件讀寫不依賴第三方網絡爬蟲庫實現硬核爬蟲

完整項目放在GitHub:https://github.com/Ymy214/meizitu-spider

具體實現思路:

    1. 分析網頁源代碼結構
    1. 找到合適的入口
    1. 窮舉訪問並解析
    1. 爬取所有英雄所有皮膚圖片

代碼思路/程序流程:

我分析王者榮耀網站上面的英雄資料庫發現所有英雄的頁面基本上都是連貫的,並且還是偏向與靜態網頁沒有過多的JavaScript渲染,所以比較適合來一波窮舉遍歷爬蟲,但是速度也很快。利用python語法字符串操作,列表操作,字典操作等等循環遍歷英雄頁面利用python列表切片索引和字符串拼接等等方法來解析HTML得到皮膚圖片鏈接和背景故事文本,將皮膚圖片二進制文件保存為png高清大圖,將所有英雄背景故事合並保存為文本文檔

下面是功能以及效果展示

整體展示

技術分享圖片

爬取效果展示-豐功偉績

技術分享圖片

爬取效果展示-碩果累累

技術分享圖片

背景故事

技術分享圖片

所有圖片鏈接寫入文本文件

技術分享圖片

代碼展示

王者榮耀【皮膚高清大圖爬蟲】源代碼如下

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

import requests
fo = open('./wzry-jpg/wzry-pf.txt', 'w')


path = './wzry-jpg/'
ls = []     
for i in range(105,200):
    url = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{0}/{0}-bigskin-1.jpg".format(i)
    status_code = requests.request('get', url).status_code
    if status_code != 200:
        continue
    for j in range(1, 9):
        imgurl = url[:-5] + '{}.jpg'.format(j)
        response = requests.request('get', imgurl)
        if response.status_code != 200:            
            continue
        ls.append(imgurl)
        ##下載
        print("開始下載第{}-{}個英雄皮膚圖片>>>".format(i,j), end='')
        with open(path+str(i)+'-'+str(j)+'.png', 'wb') as f:
            f.write(response.content)
            print('======下載完成======')

    
for i in range(501,516):
    url = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{0}/{0}-bigskin-1.jpg".format(i)
    status_code = requests.request('get', url).status_code
    if status_code != 200:
        continue
    for j in range(1, 9):
        imgurl = url[:-5] + '{}.jpg'.format(j)
        response = requests.request('get', imgurl)
        if response.status_code != 200:            
            continue
        ls.append(imgurl)
        ##下載
        print("開始下載第{}-{}個英雄皮膚圖片>>>".format(i,j), end='')
        with open(path+str(i)+'-'+str(j)+'.png', 'wb') as f:
            f.write(response.content)
            print('======下載完成======')
##print(ls)
        
##連接寫入txt文件
for line in ls:
    fo.write(line+'\n')
fo.close()


王者榮耀【英雄背景故事爬蟲】源代碼如下

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

import requests
fo = open('R:/python123全國等考/wzry-jpg/pop-bd.txt', 'w')


ls = []     
for i in range(105,200):
    url = "https://pvp.qq.com/web201605/herodetail/{}.shtml".format(i)
    r = requests.request('get', url)
    if r.status_code != 200:
        continue
    r.encoding = 'gbk'
    name = r.text.split('cname')[1].split(',')[0].split("'")[1]
    text = r.text.split('pop-bd')[1].split('p>')[1][:-2]
    print("開始保存第{}個英雄背景故事>>>".format(i))
    fo.write('【'+name+'】'+'\n'+text+'\n'+'-'*30)

for i in range(501,516):
    url = "https://pvp.qq.com/web201605/herodetail/{}.shtml".format(i)
    r = requests.request('get', url)
    if r.status_code != 200:
        continue
    r.encoding = 'gbk'
    name = r.text.split('cname')[1].split(',')[0].split("'")[1]
    text = r.text.split('pop-bd')[1].split('p>')[1][:-2]
    print("開始保存第{}個英雄背景故事>>>".format(i))
    fo.write('【'+name+'】'+'\n'+text+'\n'+'-'*30)

##連接寫入txt文件

fo.close()

        




另外本人還有面下給小白的

    1. 反防盜鏈爬取妹子圖
    1. 王者榮耀背景故事爬蟲

      歡迎學習支持

      有用或幫到你的話不妨點個star我將感激不盡

python爬蟲王者榮耀高清皮膚大圖背景故事通用爬蟲