一、實驗一——PyQuery爬蟲
二、實驗二——爬取王者榮耀皮膚
代碼來自:https://blog.csdn.net/qq_42453117/article/details/103190981
其中有詳細關於代碼的解釋。我只是借用這個代碼來補充一下python知識。
import os
import requests
url = 'https://pvp.qq.com/web201605/js/herolist.json'
herolist = requests.get(url) # 獲取英雄列表json文件
herolist_json = herolist.json() # 轉化爲json格式
hero_name = list(map(lambda x: x['cname'], herolist.json())) # 提取英雄的名字
hero_number = list(map(lambda x: x['ename'], herolist.json())) # 提取英雄的編號
# 下載圖片
def downloadPic():
i = 0
for j in hero_number:
# 創建文件夾
os.mkdir("C:\\Users\\C\\Desktop\\wzry\\" + hero_name[i])
# 進入創建好的文件夾
os.chdir("C:\\Users\\C\\Desktop\\wzry\\" + hero_name[i])
i += 1
for k in range(10):
# 拼接url
onehero_link = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str(
j) + '-bigskin-' + str(k) + '.jpg'
im = requests.get(onehero_link) # 請求url
if im.status_code == 200:
open(str(k) + '.jpg', 'wb').write(im.content) # 寫入文件
downloadPic()
1、lambda函數。
也叫匿名函數,沒有具體的函數名稱,它允許快速定義單行函數,可以用在任何需要函數的地方。區別於def定義的函數。
def與lambda區別:
(1)def創建函數是有名稱的,而lambda沒有。
(2)lambda會返回一個函數對象,但這個對象不會賦給一個標識符,而def則會把函數對象賦值給一個變量。
(3)lambda只是一個表達式,而def則是一個語句。
(4)lambda表達式“:”後面,只能有一個表達式,而def可以有多個。
(5)像if或for或print等語句不能用於lambda中。
(6)lambda一般用來定義簡單的函數,而def則可以定義複雜的函數。
例:
(1)單參數
g = lambda x: x**2
print(g(3))
'''
9
'''
(2)多參數
g = lambda x, y, z : (x + y)**z
print(g(1,2,3))
'''
27
'''
2、map函數
map(lambda x:x*x, [y for y in range(10)])
map函數,它可以將一個函數映射到一個可枚舉類型上面。
a = [1, 2, 3]
f = lambda x:x+1
map(f,a)
map(f, a)就是將函數f依次套用在a的每一個元素上面,獲得結果[2, 3, 4]。現用lambda表達式來替換f.
這個用法就類似於爬蟲中所述的代碼形式。
語法:
map( function, iterable, …)
function……函數
iterable……一個或多個序列
返回值
python2 返回列表
python3 返回迭代器