当前位置: 首页 > news >正文

做网站获取手机号码/谷歌优化培训

做网站获取手机号码,谷歌优化培训,马克杯在线设计网站,网页制作基础教程cs3此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。本文章纯野生,无任何借鉴他人文章及抄袭等。坚持原创!!前言你好。这里是Python爬虫从入门到…

此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。

本文章纯野生,无任何借鉴他人文章及抄袭等。坚持原创!!

前言

你好。这里是Python爬虫从入门到放弃系列文章。我是SunriseCai。

本文章主要介绍利用爬虫程序下载 英雄联盟的 所有英雄的皮肤。

1. 文章思路

看看英雄联盟网站,如下多图所示:

首页(一级页面)

d7907f558ed9287ca697bb8ece8bb037.png

皮肤页面(二级页面)

2862eabdb88b759414cd5e26e3b595d6.png

图片(三级页面)

4f157f280b301cb1d7b62044625a6d08.png

通过上面几张图片可以看出,这一套下来依旧是个俄罗斯套娃!!!

访问 首页(一级页面) 获取 所有英雄链接(二级页面)

访问 英雄链接(二级页面) 获取 图片链接(三级页面)

访问 图片链接(三级页面),保存图片。

e76ede51285813616a6d4b20eefef2bb.png

那么,接下来的就是用代码实现下载图片了。

2. 请求 + 分析 网页

上面有说到,本文章的需请求的首页为https://lol.qq.com/data/info-heros.shtml。

2.1 请求首页

浏览器打开 网站首页,点击F12,进入开发者模式。看看页面结构,发现了二级页面的链接就在

标签里面。perfect !!!

d7743d1a938a8a6ed5d202feb4fc2b15.png

相信细心的你已经发现,二级页面url的规律为:https://lol.qq.com/data/info-defail.shtml?id= 这一串字符后面跟一个数字,那这个数字是如何而来的呢?下面会讲解到。

首页请求代码:

import requests

url = 'https://lol.qq.com/data/info-heros.shtml'

headers = {

'User-Agent': 'Mozilla/5.0'

}

def get_hero_list():

res = requests.get(url, headers=headers)

if res.status_code == 200:

print(res.text)

else:

print('your code is fail')

!!!

执行上述代码之后,发现并没有上图中的

标签的内容,这是怎么回事呢?标签的内容极有可能是通过xhr异步加载出来的的文件,咱们来抓包看看!!

再次请求首页时候发现,在xhr这里,有一个hero_list.js文件,翻译过来就是英雄列表。

看到hero_list.js的url为 :https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js

4a3ca1c9e3465f2c72732caa21aa7050.png

点击之后,发现这正是我们需要的内容!!!

就是这里,注意看画框红色的地方有一个heroId,这个就是上面说的二级页面url屁股的Id

0bb6cb721102aab464b8cb7e0c03dbde.png

在浏览器输入hero_list.js文件的地址,如下图:

c9a1cb9c6625b71f61b4c63d11c45d44.png

非常好,请求代码也是很简单,只需要将上面代码的url替换为https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js 即可。

2.2 请求二级页面(皮肤页面 )

这里以黑暗之女–安妮 为例,看到安妮共有13个皮肤。

cf79b0af595a1a2252ee2665f1ec7120.png

抓包发现,有个1.js文件的数据刚好对应了安妮的13个皮肤。

c39430ebb3b2366e7c4be01c41f6bf7a.png

1.js文件的url为:https://game.gtimg.cn/images/lol/act/img/js/hero/1.js

2.js文件的url为:https://game.gtimg.cn/images/lol/act/img/js/hero/2.js

当然了,这个后面的Id就是每个英雄的heroId。

c03e97afb27e7455ca1f9b221b2d25d0.png

用浏览器打开1.js文件的url,如下图所示:

2b47667a7f95bd36203549ffb39fffc3.png

看到1.js文件有几个img的url,他们所表示图片的像素比如下:

名称

像素比mainImg

980x500

iconImg

60x60

loadingImg

308x560

videoImg

130x75

sourceImg

1920x470

本次文章用mainImg做下载演示。

在这里,捋一下思路:

请求https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js 获取英雄名称、Id。

根据Id去拼接英雄皮肤的url:https://game.gtimg.cn/images/lol/act/img/js/hero/1.js(Id替换数字1)

上述请求后可以得到图片的url了,请求图片url即可。

3. 代码部分

3.1 代码:首页

请求首页,获取二级页面(皮肤页面的链接)import requests

url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'

headers = {

'User-Agent': 'Mozilla/5.0'

}

def get_hero_list():

"""

:return: 获取英雄名称与heroId

"""

res = requests.get(url, headers=headers)

if res.status_code == 200:

data = json.loads(res.text)

for item in data['hero']:

id = item['heroId']

name = item['name']

title = item['title']

print(id, name, title)

else:

print('your code is fail')

get_hero_list()

结果如下:

c74e97f68ed338d3bf6f9e7689fcaf6d.png

3.2 代码:二级页面(皮肤页面)

import requests

skinUrl = 'https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'

headers = {

'User-Agent': 'Mozilla/5.0'

}

def get_skin_url(Id):

"""

:param Id: 英雄ID,用于拼接url

:return:

"""

res = requests.get(skinUrl.format(Id), headers=headers)

if res.status_code == 200:

data = json.loads(res.text)

for item in data['skins']:

url = item['mainImg']

name = item['name'].replace('/', '')

print(url, name)

else:

print('your code is fail')

get_hero_list()

结果如下:

值得注意的是,如果是一款皮肤有多个颜色的情况,则有可能不带mainImg的url。

c213ee165e6d4511d7cbcca9ede3ee93.png

3.3 完整代码

复制黏贴即可运行# -*- coding: utf-8 -*-

# @Time : 2020/1/28 21:12

# @Author : SunriseCai

# @File : YXLMSpider.py

# @Software: PyCharm

import os

import json

import time

import requests

"""英雄联盟皮肤爬虫程序"""

class YingXLMSpider(object):

def __init__(self):

self.onePageUrl = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'

self.skinUrl = 'https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'

self.headers = {

'User-Agent': 'Mozilla/5.0'

}

def get_heroList(self):

"""

:return: 获取英雄的heroId,和英雄名称

"""

res = requests.get(url=self.onePageUrl, headers=self.headers)

if res.status_code == 200:

data = json.loads(res.text)

for item in data['hero']:

Id = item['heroId']

title = item['title']

self.get_skin_url(Id, title)

else:

print('your code is fail')

def get_skin_url(self, Id, folder):

"""

:param Id: 英雄ID,用于拼接url

:param folder: 以英雄名称命名的文件夹

:return:

"""

url = self.skinUrl.format(Id)

res = requests.get(url, headers=self.headers)

if res.status_code == 200:

data = json.loads(res.text)

for item in data['skins']:

url = item['mainImg']

name = item['name'].replace('/', '')

self.download_picture(url, name, folder)

else:

print('your code is fail')

def download_picture(self, url, name, folder):

"""

:param url: 皮肤地址

:param name: 皮肤名称

:param folder: 文件夹

:return:

"""

# 判断如果文件夹不存在则创建

if not os.path.exists(folder):

os.makedirs(folder)

# 判断url不为空和 图片不存在本地则下载(主要用于断点重连)

if not url == '' and not os.path.exists('%s/%s.jpg' % (folder, name)):

time.sleep(1)

res = requests.get(url, headers=self.headers)

with open('%s/%s.jpg' % (folder, name), 'wb') as f:

f.write(res.content)

print('%s.jpg' % name, '下载成功')

f.close()

def main(self):

self.get_heroList()

if __name__ == '__main__':

spider = YingXLMSpider()

spider.main()

来看看成果:

3c61feed8ae3a50c4293799c8d998b24.png

64a8cfb8e9499d73a693b6e313d7f677.png

本篇文章很水,但是总体思路是正确的。建议各位通过复制黏贴代码去执行一番,有任何疑问请先自己动手解决,尽信书则不如无书

实在解决不了可以一起交流哟。

最后来总结一下本章的内容:

介绍了英雄联盟网站全英雄皮肤的爬虫思路

代码展示

0483bbdee7e01766f5017f69a5b7b9ef.png

感谢你的耐心观看,点关注,不迷路。

为方便菜鸡互啄,欢迎加入QQ群组织:648696280

下一篇文章,名为 《Python爬虫从入门到放弃 09 | Python爬虫实战–下载某音乐网–待定》。

http://www.lbrq.cn/news/1376803.html

相关文章:

  • 上海高端网站制作公司/百度云搜索引擎入口盘多多
  • 万网网站空间服务范围及费用/推广普通话手抄报文字内容
  • 信息类网站有哪些/seo优化顾问
  • c2c网站开设店铺/免费发布信息的平台
  • 网站建设合同违约/快速排名方案
  • 高端企业网站建设公司/网站开发需要哪些技术
  • 宜昌外贸网站建设优化推广/搜索引擎技术基础
  • WordPress 4.9添加备案号/安徽网站seo公司
  • 网站建设div设置圆角/北京seo网络优化师
  • 网站空间面板/永久免费不收费的污染app
  • 可以看的网站都有哪些/长沙网站关键词排名
  • 手机网站自动适应/哪家建设公司网站
  • 网站建设(中企动力)/平谷头条新闻
  • ecshop 企业网站/100个关键词
  • 网站制作怎么学/在百度上打广告找谁
  • 网站建设励志文章/整合营销沟通
  • 一站式网站建设报价/南宁网站建设及推广
  • 做网站 流量怎么抓钱/百度推广一般多少钱
  • 文安做网站shijuewang/免费网站注册com
  • 营销型网站建设实战感想/自创网站
  • html网站设计源码/今日中央新闻
  • 制作网站的公司注册资本要多少/站长之家seo综合查询
  • wordpress主页删除/seo上排名
  • seo网站推广杭州/做网站公司哪家比较好
  • 怎么做网站统计/创意营销策划方案
  • 做网站会遇到什么问题/提升seo排名
  • 优质做网站费用/百度小程序怎么进入
  • 网站推广网络推广/如何网络营销自己的产品
  • 做购物类网站有哪些/市场调研报告500字
  • 知乎系统是wordpress/公众号seo排名软件
  • [硬件电路-121]:模拟电路 - 信号处理电路 - 模拟电路中常见的难题
  • CYUSB3014-BZXC-USB3.0接口芯片-富利威
  • 再见!三层框架开发
  • Day18--二叉树--530. 二叉搜索树的最小绝对差,501. 二叉搜索树中的众数,236. 二叉树的最近公共祖先
  • 思途JSP学习 0801
  • 从零到英雄:掌握神经网络的完整指南