#爬取lol全英雄皮肤
 import re
 import traceback #  异常跟踪
 import requests
 from bs4 import BeautifulSoup
 #获取html
 def get_url(url, hander):
     try:
         r = requests.get(url, headers=hander, timeout=30)
         r.raise_for_status()
         r.encoding = r.apparent_encoding
         return r.text
     except:
         traceback.print_exc() #将异常信息打印出来
         return ""
 #解析html
 def prasing_page(lst,html):
     try:
         soup = BeautifulSoup(html, "html.parser")
         for a in soup.find_all('li', class_=re.compile('boxShadow')):
             tag_a = a('a')
             for i in tag_a:
                 lst.append(i['href'])
         return lst
     except:
         traceback.print_exc()
         return ""

 #解析获取到的单个html并筛选和下载
 def getUrl_prasingpag(lst, hander):
     hero_img_url = []
     hero_skin_name = []
     hero_name = []
     for u in lst:
         try:
             r = requests.get(u, headers=hander, timeout=30)
             r.raise_for_status()
             r.encoding = r.apparent_encoding
        #二次解析
             soup = BeautifulSoup(r.text, "html.parser")
             pag = soup.find_all('div', class_=re.compile('othersPifuBox'))
             for m in pag:
                 tag_img = m('img')
                 tag_p = m('p')
                 tag_span = m('span')
                 for m in tag_p:
                     hero_skin_name.append(m.string)
                 for m in tag_img:
                     hero_img_url.append(m['src'])
                 for m in tag_span:
                     hero_name.append(m.string)
         except:
             traceback.print_exc()  # 将异常信息打印出来
             continue
               #下载到本地
         for i in range(len(hero_name)):
             try:
                 path = 'O:/lol_hero_jpg/' + hero_skin_name[i]+'--' + hero_name[i] + '.jpg'
                 f = open(path, 'wb')
                 r = requests.get(hero_img_url[i], stream=True)
                 f.write(r.content)
                 print("\r当前进度>>>>>>>>>>>>>>>>>>{:.0f}%>>>>>>>>>>>>>>>>>>".format(i * 100 / len(lst)), end="")
                 f.close()
             except:
                 traceback.print_exc()  # 将异常信息打印出来
                 continue

 def main():
     hander = {"User-Agent":"Mozilla/5.0"}
     deep = 43 #定义爬取页数
     list = []
     for i in range(deep):
         try:
             url = "http://********/hero_"+str(1+i)+".shtml"
             html = get_url(url, hander)
             prasing_page(list, html)
             getUrl_prasingpag(list, hander)
         except:
             continue

 main()

记一次 爬取LOL全皮肤原画保存到本地的实例的更多相关文章

  1. python爬取某个网站的图片并保存到本地

    python爬取某个网站的图片并保存到本地 #coding:utf- import urllib import re import sys reload(sys) sys.setdefaultenco ...

  2. 爬取博主所有文章并保存到本地(.txt版)--python3.6

    闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...

  3. 如何优雅的爬取 gzip 格式的页面并保存在本地(java实现)

    1. 引言 在爬取汽车销量数据时需要爬取 html 保存在本地后再做分析,由于一些页面的 gzip 编码格式, 获取后要先解压缩,否则看到的是一片乱码.在网络上仔细搜索了下,终于在这里找到了一个优雅的 ...

  4. Python爬取LOL英雄皮肤

    Python爬取LOL英雄皮肤 Python 爬虫  一 实现分析 在官网上找到英雄皮肤的真实链接,查看多个后发现前缀相同,后面对应为英雄的ID和皮肤的ID,皮肤的ID从00开始顺序递增,而英雄ID跟 ...

  5. Python3爬虫使用requests爬取lol英雄皮肤

    本人博客:https://xiaoxiablogs.top 此次爬取lol英雄皮肤一共有两个版本,分别是多线程版本和非多线程版本. 多线程版本 # !/usr/bin/env python # -*- ...

  6. python网络图片爬取存储全代码

    #图片爬取全代码import requestsimport osurl = "https://timgsa.baidu.com/timg?image&quality=80&s ...

  7. 爬取表格类网站数据并保存为excel文件

    本文转载自以下网站:50 行代码爬取东方财富网上市公司 10 年近百万行财务报表数据 https://www.makcyun.top/web_scraping_withpython6.html 主要学 ...

  8. 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)

    前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...

  9. scrapy框架来爬取壁纸网站并将图片下载到本地文件中

    首先需要确定要爬取的内容,所以第一步就应该是要确定要爬的字段: 首先去items中确定要爬的内容 class MeizhuoItem(scrapy.Item): # define the fields ...

随机推荐

  1. oracle函数 CHR(n1)

    [功能]:将ASCII 码转换为字符. [参数]:n1,为0 ~ 255,整数 [返回]:字符型 [示例] SQL> select chr(54740) zhao,chr(65) chr65 f ...

  2. uda 4.C++面向对象编程

    Python vs C++ 对比课   在本课中,你将学习如何用 C++ 编写类.像以前的课程一样,你需要比较 Python 的编程方式和 C++ 中编程方式的不同. 我们直接看例子.下面是一个名为 ...

  3. 在ORACLE存储过程中创建临时表

    在ORACLE存储过程中创建临时表 存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截 ...

  4. 为什么有时候Css样式表某个属性引用不成功?

    首次使用博客,很多东西都在探索,第一篇文章也不知道发布点什么,就随便写写,是在word里面写的,也懒得排版,将就这用吧. 闲着没事找了酷狗的API写了个简单的静态网页,完成了搜索,展示,播放功能.就想 ...

  5. ios9.3.3版本下 document.execCommand("copy") 失败

    copyText()安卓,ios11,ios12都可用 ,并且不弹起输入键盘 // 复制copyText function copyText(text) { var input = document. ...

  6. Python--day28--面试题

  7. 使用jackson转json解决双向关联循环调用

    ITOO V1.0的开发算是告一段落了,现在是整理总结交接环节,在这个项目中常见的问题也该好好整理一下和大家分享了,这次主要介绍转json循环调用的问题. 一.问题背景 相信只要使用ORM映射实体关联 ...

  8. Python--day39--进程池原理及效率测试

    #为什么要有进程池的概念 #效率 #每次开启进程都要创建一个属于这个进程的内存空间 #寄存器 堆栈 文件 #进程过多 操作系统调度进程 # #进程池 #python中的 先创建一个属于进程的池子 #这 ...

  9. 2018-8-10-WPF-可获得焦点属性

    title author date CreateTime categories WPF 可获得焦点属性 lindexi 2018-08-10 19:16:53 +0800 2018-05-15 15: ...

  10. MySQL视图 definer & invoker 权限

    1.创建视图 CREATE VIEW `NewView`AS SELECT `user`.USER_ID, `user`.USER_NAME, department.DEPT_ID, departme ...