Python爬虫--获取网页图片两步走:美女图片+王者荣耀皮肤


一、目标

1、实现当前页面的图片爬取;

2、实现二级网页下的图片爬取并分别存储


二、实现截图

Python爬虫--获取网页图片两步走:美女图片+王者荣耀皮肤_第1张图片
王者荣耀皮肤一级目录
Python爬虫--获取网页图片两步走:美女图片+王者荣耀皮肤_第2张图片


二、代码


1、美女图片

# -*- coding: utf-8 -*-
# @Time    : 2021年1月11日09:49:47
# 爬取图片
import  requests
#查找参数类
from pyquery import PyQuery as pq
import time
#查看请求信息;爬虫发送的python爬取请求,一般不会被网站允许,通过更改User-Agent可以骗过该网站
"""
步骤:
打开你要爬虫的网页
按键盘的F12或手动去浏览器右上角的“更多工具”选项选择开发者工具
按键盘的F5刷新网页
点击Network,再点击Doc
点击Headers,查看Request Headers的User-Agent字段,直接复制
将刚才复制的User-Agent字段构造成字典形式
"""
headers={
     
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36'
                '(KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
#使用代理IP
proxies={
     
    'https':'218.75.69.50:39590'
}
#请求网站,获取源代码
def code_request(url):
    #r获取为网页的二进制内容
    r=requests.get(url,headers=headers,proxies=proxies)
    #编码
    r.encoding='GBK'
    #返回文本
    html=r.text
    return html
def image_request(text):
    doc=pq(text)
    #锁定文本页面中的img标签
    images=doc('div.list ul li img').items()
    x=0
    for image in images:
        #获取每张图片的url
        img_url=image.attr('src')
        #获取网页的二进制内容
        img=requests.get(img_url,headers=headers,proxies=proxies).content #注意:获取内容
        #定义图片存放的路径
        path="!!!你要保存的图片路径!!!\\爬虫抓取的图片\\netbian.com\\"+str(x)+".jpg"
        #将文件写入指定目录,写入文件用:wb,即:Python文件使用“wb”方式打开
        with open(path,'wb') as f:
            f.write(img)
            time.sleep(1)
            print("正在下载第{}张图片".format(x)) #format 为格式化函数
            x+=1
    print("写入完成")
def main():
    url="http://www.netbian.com/"
    text=code_request(url)
    image_request(text)
if __name__=="__main__":
    main()



2、王者荣耀皮肤

# -*- coding: UTF-8 -*-
"""
@Author  :Wangdali
@Date    :2021年1月11日10:04:42
"""
import requests
import os
import time
import json
from lxml import etree
from fake_useragent import UserAgent
import logging
#日志的基本输出设置
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')
#从网站获取皮肤的各项信息#注意:获取的为该网页下的皮肤,所以url为json列表
url='https://pvp.qq.com/web201605/js/herolist.json'
#获取json文件内容
herolist=requests.get(url)
herolist_json=herolist.json()#转化为json格式
"""
lambda表达式:Python写一些执行脚本时,使用lambda就可以省下定义函数过程。
map()函数:第一个参数为一个函数,第二个参数为迭代器
"""
hero_number=list(map(lambda x:x['ename'],herolist_json)) #提取英雄的名字
hero_name=list(map(lambda x:x['cname'],herolist_json)) #提取英雄的编号
#使用python下载图片
def image_get():
    i=0
    for j in hero_number:
        os.mkdir("!!!你要保存的图片路径!!!\\爬虫抓取的图片\\王者荣耀皮肤\\"+hero_name[i])
        os.chdir("!!!你要保存的图片路径!!!\\爬虫抓取的图片\\王者荣耀皮肤\\"+hero_name[i])
        i+=1
        for k in range (10):
            #通过字符串的拼接来构造URL请求
            img_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str(
                j) + '-bigskin-' + str(k) + '.jpg'
            img = requests.get(img_url).content  # 请求url的内容
            #    if im.status_code == 200:
            #    open(str(k) + '.jpg', 'wb').write(im.content)  # 写入文件
            if requests.get(img_url).status_code == 200: #防止出现不符合要求的图片
                with open(str(k)+'.jpg','wb') as f:
                    f.write(img)
                    #time.sleep(0.1)
                    print("正在下载当前英雄的第{}张图片".format(k))
def main():
    image_get()
if __name__=="__main__":
    main()


指导博客(阿里嘎多!)

1、博客A
2、博客B

你可能感兴趣的:(python,python,爬虫)