从网页获得json数据送入listview_Python爬虫实战:炉石传说卡牌、原画数据抓取

757de5e4521535c999e0882b3a8816d5.png

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

f3ffca86ff93ef0458f7db2e26e18120.png

原画爬取

先看一下炉石传说的原画:
炉石传说原画链接:http://news.4399.com/gonglue/lscs/kptj/

a930bc937799fdfa2ddd739d6771e2dc.png

bd23ca17d2ec353e4e105471d36ff0de.png

该网站通过点击查看更多加载新的内容,本打算使用Selenium模拟点击获取图片信息 ,尝试发现源码中 该按钮并无相应的跳转链接

0a3a3d4232d12059c642eab01e84cdd0.png


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

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

210b611bc28765b767771e03fb062eb8.png


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

点击查看更多后 显示原画

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

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

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

卡牌爬取

炉石传说卡牌链接:http://cha.17173.com/hs/

eb97e5208b7f77bfb60bf637da9b114d.png

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

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

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

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

1bb529337e8634d1a86d77b9600cb808.png

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

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

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

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

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

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

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

e88e95b430975db1a3a229a9b50d299d.png

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

b13bb0819b12c40eec19dbd825f01256.png

以上文章来源于码农小黑屋,作者 丨像我这样的人丨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值