admin管理员组文章数量:1619283
python -又一次爬虫练习(爬取LOL所有的英雄头像)
目标网站:https://lol.qq/data/info-heros.shtml#Navi
一开始我尝试用requests来get网页源代码,结果发现不管用。
查看一下源代码,发现
原来全部是用JS脚本动态加载出来的,直接在源码里面找是找不到的。
这就要祭上我们的 Web kit 了
Web kit的安装与使用请看上一篇:https://blog.csdn/weixin_44823747/article/details/108173246
直接上代码
源码:
# coding=utf-8
import re
from urllib.request import urlopen
import os.path
import sys
from PyQt4.QtWebKit import *
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Render(QWebPage): # 用来渲染网页,将url中的所有信息加载下来并存到一个新的框架中
def __init__(self,url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
#创建images文件夹
images_dir = 'images/'
if not os.path.exists(images_dir):
os.mkdir(images_dir)
url = 'https://lol.qq/data/info-heros.shtml#Navi'
r = Render(url)
#得到经过渲染的网页
html = r.frame.toHtml()
#截取主体部分
body_search = re.search(r'<ul id="jSearchHeroDiv" class="imgtextlist">([\s\S]+?)</ul>.*?',html)
body = body_search.group(1)
#获取图片链接和对应英雄名
hero = re.findall(r'<img src="(.*?)" alt="(.*?)\s(.*?)">.*?',body)
#写入图片
for i in hero:
name = i[1] + '_' + i[2]
print("正在下载"+name)
image = urlopen('http:' + i[0])
with open('images/'+name+'.png','wb') as f:
f.write(image.read())
print("----下载完成----")
发现还挺简单的,也就三四十行代码
简简单单。。。
爬取所有物品也是同样的原理,这个代码改一下就能实现,由于本人比较懒,所以就不搞了。。。
版权声明:本文标题:python -又一次爬虫练习(爬取LOL所有的英雄头像) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1728795199a1174098.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论