专栏首页python小白到大牛Python抓取炉石传说卡牌,做一个女神的拼图游戏
原创

Python抓取炉石传说卡牌,做一个女神的拼图游戏

炉石传说原画1

炉石传说原画2

本打算使用Selenium模拟点击获取图片信息 

尝试发现源码中 该按钮并无相应的跳转链接

这不应该啊 没有相应的跳转链接 点击后是如何加载新的图片?

后来浏览整体网站源码后 发现把问题想复杂 根本不需要模拟点击查看更多

网站其实已经加载了所有的卡牌原画 只是之后的原画做了隐藏处理默认不展示  style=display

点击查看更多后 显示原画

那么只需使用requests获取网页源码

用BeautiSoup/正则表达式/pyQuery解析元素 遍历相应img的url 即可下载

Github

教训:爬虫前 不要根据网页所对的操作实施相应的代码爬取 不要有这样的思维定式 首先要做的是先大体浏览分析整个网页的源代码  有的可能直接写在源码或json或js中 无需再加工

炉石传说卡牌链接

炉石传说卡牌

该网站通过下拉右边的滚动条不断加载新的卡牌

与上一个网站不同  上一个网站一次性写入了所有卡牌 只不过做了隐藏处理

该网站是通过js动态加载渲染出的卡牌 直接获取源码 无法得到所有卡牌信息

那么就用selenium模拟下拉滚动条(selenium简直居家必备之神器)

使用selenium执行js脚本 每次执行下拉1000个单位滚动条 执行90次

为什么是90次 测试出来的 大概90次拉到底

注意:这里要增加1~3秒的暂停时间 用于网页渲染

第一次没有设置停留时间 无法获取新的数据  怀疑自己 怀疑人生

经前端/后端好友L君的提示 需增加暂停时间 这样才能获得加载渲染后的数据

browser.page_source便可获得动态加载的所有数据

有了数据 之后就很简单 正则匹配获取相应url下载即可

Github

最后获得了800张原画 1324张卡牌

既然获得了这么多卡牌和原画 不能浪费 利用起来 拼图!

致敬下玩了好几年的炉石

谢谢你!

顺手拼一下女神!我有一个微信公众号,经常会分享一些python技术相关的干货;如果你喜欢我的分享,可以用微信搜索“python语言学习” 关注,欢迎大家加入千人交流答疑裙:699+749+852

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python终级教程!语音识别!大四学生实现语音识别技能!吊的不行

    语音识别源于 20 世纪 50 年代早期在贝尔实验室所做的研究。早期语音识别系统仅能识别单个讲话者以及只有约十几个单词的词汇量。现代语音识别系统已经取得了很大进...

    猫咪编程
  • 庆祝法国队夺冠:用Python放一场烟花秀

    天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花庆祝昨晚法国队夺冠,工作之余也可以随时让程序为自己放一场烟花秀...

    猫咪编程
  • 用Python每秒钟下载一张高清大图,快不快?

    如果爬虫需要展现速度,我觉得就是去下载图片吧,原本是想选择去煎蛋那里下载图片的,那里的美女图片都是高质量的,我稿子都是差不多写好了的,无奈今天重新看下,妹子图的...

    猫咪编程
  • 辞职理由千奇百怪,腾讯的也许最...

    最近本乐看到我们HR的小姐姐都是一脸苦逼,为啥?因为每逢“金三银四”就会有各种层出不穷的奇葩离职信~今儿乐乐就带你们细数一下这些年我见过的奇葩辞职理由。 吃...

    腾讯乐享
  • RavenDb学习(八)高级特性上半部分

    1、事务支持 别的关系型数据库和RavenDb一起使用 using (var transaction = new TransactionScope()) { ...

    岑玉海
  • 3分钟了解Java双亲委派机制

    在介绍双亲委派机制的时候,不得不提ClassLoader。说ClassLoader之前,我们得先了解下Java的基本知识。 Java是运行在Java的...

    吴延宝
  • Spring杂谈 | 什么是ObjectFactory?什么是ObjectProvider?

    这个接口的定义非常简单,就是一个对象工厂,定义了一个返回对象的工厂方法。回顾我们直接介绍过的一个内容FactroyBean,其接口定义如下:

    程序员DMZ
  • 跟小伟一起学习类加载机制

    我们在学习 java 基础的时候,从宏观上了解了一个类到运行大致是:.java 文件通过 javac 编译器编译得到 .class 文件,在用到该类时,jvm ...

    niceyoo
  • 字符串 模式匹配

    要点 模式匹配是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串,这就是模式匹配。 假设P是给定的子串,T是待查找的字...

    静默虚空
  • PHP的几个常用加密函数

    在网站的开发过程中,常常需要对部分数据(如用户密码)进行加密,本文主要介绍PHP的几个常见的加密函数

    wangxl

扫码关注云+社区

领取腾讯云代金券