【代码】爬虫爬取英雄联盟壁纸

前言

Python Selenium 爬虫爬取英雄联盟官网壁纸

准备工作

1
pip install selenium

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import os, time, urllib.request, ssl
from selenium import webdriver

# 1、创建一个图片存储目录
if not os.path.exists('./皮肤/'):
os.mkdir('./皮肤/')

# 2、强制取消ssl认证(https会有ssl加密)
ssl._create_default_https_context = ssl._create_unverified_context

# 3、声明一个全局变量,用于临时存储图片数据
hero = []

# 4、创建浏览器驱动对象
browser = webdriver.Chrome(executable_path='./chromedriver')

# 5、编写爬虫流程
def get_images():
# 1、访问网站
browser.get('https://lol.qq.com/data/info-heros.shtml')
# 2、等待浏览器加载数据完成
time.sleep(1)
# 3、为了确保浏览器数据加载完毕 控制浏览器自动下滑
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
# 4、页面数据处理
infos = browser.find_element_by_id('jSearchHeroDiv')
# print(infos.text)
# 5、获取所有英雄详情页链接
links = infos.find_elements_by_css_selector('li>a')
for link in links:
urls = link.get_attribute('href')
# print(urls)
# 将获取到的链接去除前后空格,并存放在元组
hero.append(urls.split())
# 6、通过控制浏览器进入英雄详情页
for _ in range(len(hero)):
browser.get(hero[_][0])
time.sleep(2)
# 7、控制浏览器下滑到指定位置
browser.execute_script('window.scrollTo(0, 800)')
# 8、抓取一个英雄的所有皮肤图片
browser.find_element_by_css_selector('#skinNAV').find_elements_by_css_selector('li a')[1].click()
skins = browser.find_element_by_css_selector('#skinBG').find_elements_by_css_selector('li')
for skin in skins:
img_title = skin.get_attribute('title')
img_url = skin.find_element_by_css_selector('img').get_attribute('src')
# print(img_url)
# 9、下载
try:
urllib.request.urlretrieve(img_url, './皮肤/%s.jpg' % img_title)
print('下载成功', img_title)
except:
pass

get_images()

完成

参考文献

腾讯课堂——青灯教育