爬虫03-王者荣耀英雄图片爬取

王者荣耀英雄图片爬取

pyquery库

https://pyquery.readthedocs.io/en/latest/ 官方文档

https://github.com/gawel/pyquery github

  • pyquery实际上是python中的jquery

  • 安装

    pip install  pyquery
    
  • 导入

    from  pyquery import PyQuery as pq
    
  • 对象解析

    urlparse = pq(url='https://www.baidu.com/')
    # urlparse = pq(url='https://www.baidu.com/',headers=USER_HEARDER)
    fileparse=pq(file='./test.html')  # 本文不做过多阐述
    reqparse = pq(req.text)  #req = requests.get('https://www.baidu.com/')   # 本文不做过多阐述
    
  • 元素定位:直接使用css选择器

    element = reqparse(css表达式).items() # .items()得到了一个generator 可以遍历获取每个元素
    
  • 元素属性值/文本获取

    • element.attr.属性名 # 如ele.attr.class就是获取class属性的值 # 这是获取元素属性方式1
    • element.attr[‘属性名’] # 获取元素属性方式2
    • element.text() # 获取元素的文本

示例代码1: 用pyquery爬

from pyquery import  PyQuery as pq
import requests
from pathlib import Path
hero_url = pq(url='https://pvp.qq.com/web201605/herolist.shtml',encoding='gbk')
heros = hero_url('.herolist img').items()
Path('hero').mkdir(exist_ok=True)
for hero in heros:
    img_url = 'https:' + hero.attr.src
    hero_name = hero.attr.alt
    with open(f'./hero/{hero_name}.png','wb') as f:
        f.write(requests.get(img_url).content)
  • 几点说明
    • encoding要加,不然无法解析出html中的中文
    • Path(‘hero’).mkdir(exist_ok=True)只是为了在当前目录下创建一个hero的文件夹用来存放英雄图片
    • hero.attr.src得到的url地址不全,要在前面加上协议信息
    • 写文件的时候要用wb模式来写图片
    • f.write应该塞一个二进制的对象,这个对象可以通过requests请求上面的url得到的响应的content来获取。
  • 但是!这样下载下来的英雄图片是缺失的,只有93个。
  • 截止到目前版本,王者已有113个,前面的一些英雄丢失了。(我的理解是延迟了?)

示例代码2: 用selenium爬

  • 不解释了
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://pvp.qq.com/web201605/herolist.shtml')
driver.maximize_window()  # 最大化窗口
driver.implicitly_wait(5)  # 隐式等待5s, 定位元素的时候如果没找到,等5s
heros = driver.find_elements('css selector','.herolist img') # 找到所有的英雄
for  hero in heros:  # hero 就是某个英雄元素, 对应到selenium中是WebElement类型
    img_url = hero.get_attribute('src') # 获取元素的src属性值
    hero_name = hero.get_attribute('alt')
    with open(f'./hero1/{hero_name}.png','wb') as f:
        pic_content = requests.get(img_url).content
        f.write(pic_content)
  • 这样可以爬下来113个英雄
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Python中,你可以使用爬虫技术来爬取王者荣耀英雄图片。以下是一个简单的示例代码来演示如何使用Python爬取王者荣耀英雄图片: ```python import requests import os def download_image(url, save_path): response = requests.get(url) with open(save_path, 'wb') as f: f.write(response.content) def crawl_hero_images(): # 创建保存图片的文件夹 if not os.path.exists('hero_images'): os.makedirs('hero_images') # 发送请求获取英雄列表 hero_list_url = 'https://api.example.com/heroes' response = requests.get(hero_list_url) hero_list = response.json() # 遍历英雄列表,爬取每个英雄的皮肤图片 for hero in hero_list: hero_name = hero['name'] skin_list = hero['skins'] for skin in skin_list: skin_name = skin['name'] image_url = skin['image_url'] save_path = f'hero_images/{hero_name}_{skin_name}.jpg' download_image(image_url, save_path) print(f'Successfully downloaded {hero_name} - {skin_name} image.') crawl_hero_images() ``` 上述代码中,我们首先创建了一个`download_image`函数,用于下载图片。然后,我们定义了一个`crawl_hero_images`函数,用于爬取英雄皮肤图片。在该函数中,我们首先发送请求获取英雄列表,然后遍历英雄列表,对于每个英雄,再遍历其皮肤列表,获取皮肤图片的URL,并使用`download_image`函数下载图片到本地。 请注意,上述代码中的URL和文件路径仅作为示例,请根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wuxianfeng023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值