使用爬虫抓取王者荣耀英雄皮肤

1:创建爬虫项目

scrapy startproject wzry

2:创建爬虫

scrapy  genspider jishudaniu example.com

3:启动爬虫

scrapy crawl jishudaniu

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# -*- coding: utf-8 -*-
import scrapy
import os
import urllib.request
 
class JishudaniuSpider(scrapy.Spider):
    name = "jishudaniu"
    #allowed_domains = ["example.com"]
 
    #爬虫爬取链接的起点
    start_urls = ['https://pvp.qq.com/web201605/herolist.shtml']
 
    def parse(self, response):
        host_name="https://pvp.qq.com/web201605/"
        hero_list = response.xpath('//div[@class="herolist-box"]/div[@class="herolist-content"]/ul/li/a');#// 表示HTML网页结构中任意部位
        for link in hero_list:
            href=link.xpath('./@href').extract()[0#./表示当前
            detial_url=host_name+href
            yield scrapy.Request(detial_url, self.detial_parse)
            #print(href)
 
 
    def detial_parse(self,response):
        message=response.xpath('/html/body/script[10]/text()').extract()[0];
        heroName = message.split(",")[0].replace("'", "").split(" = ")[1]
        heroNo = message.split(",")[1].replace("'", "").replace(";", "").split(" = ")[1].strip()
        #print(message.split(",")[0].replace("'", "").split("=")[1]);
        #print(message.split(",")[1].replace("'", "").replace(";", "").split(" = ")[1]);
        heroSkinLinksTemplate = f"https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{heroNo}/{heroNo}-bigskin-"
 
        filePath = "E:\\wzryimg\\"
        if not os.path.exists(filePath + heroName):
            os.makedirs(filePath + heroName)
 
        skins = response.xpath('//div[@class="pic-pf"]/ul/@data-imgname').extract()[0]
        skin_list = skins.split("|")
        tempSkinList = []
        for skin in skin_list:
            tempSkinList.append(skin.split("&")[0])
        for index in range(0,len(tempSkinList)):
            #获取皮肤名称 os.sep:分割符
            skinname=tempSkinList[index]
            fileName="{}{}{}{}".format(filePath + heroName,os.sep,skinname,".jpg")
            print(heroSkinLinksTemplate)
            urllib.request.urlretrieve(heroSkinLinksTemplate + "{0}.jpg".format(index + 1), filename=fileName)

  

posted @   小小强学习网  阅读(378)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2017-12-13 Chrome表单文本框自动填充黄色背景色样式
点击右上角即可分享
微信分享提示