LOL全英雄面板爬蟲

2021-09-26 07:08:23 字數 2891 閱讀 5123

# -*- coding: utf-8 -*-

import requests

import re

import os

class

lolspider

:def

__init__

(self)

:"""

定義乙個user-agent,偽裝成瀏覽器

"""self.headers =

defgetresponse

(self, url)

:"""

傳送請求,獲取響應

url: 需要請求請求的url

"""try:

response = requests.get(url, headers=self.headers)

response.encoding =

'utf-8'

assert response.status_code ==

200return response

except

:return

none

defrun

(self)

:"""

程式入口,用來啟動爬蟲

"""heroinfo_url =

""# 獲取文字資訊

heroinfotext = self.getresponse(heroinfo_url)

.text

# 使用正則匹配到英雄的英文名、key值(英雄**url的重要可變引數)、稱號、中文名

hero_info_list = re.findall(

'"id":"(.*?)","key":"(.*?)","name":"(.*?)","title":"(.*?)",'

, heroinfotext)

# 乙個是145條資料(145個英雄)

for hero_info in hero_info_list:

item =

item[

"英文名"

]= hero_info[0]

item[

"key"

]= hero_info[1]

# 需要通過下方方法進行解碼,否則得到的中文是 \u6df1\u6e0a\u5de8\u53e3 這種樣子

item[

"稱號"

]= hero_info[2]

.encode(

).decode(

"unicode-escape"

) item[

"中文名"

]= hero_info[3]

.encode(

).decode(

"unicode-escape"

)# 存放所有英雄**的資料夾

base_path =

"./heroimgs/"

ifnot os.path.exists(base_path)

: os.mkdir(base_path)

# 單個英雄的資料夾,這裡儲存此英雄的所有**

path = base_path + item[

"中文名"]if

not os.path.exists(path)

: os.mkdir(path)

else

:print

("資料夾已存在"

) self.requestskinurl(path, item[

"key"])

defrequestskinurl

(self, path, key)

:"""

構造單個英雄每張**的url,傳送請求,獲取的二進位制資料

path: 需要儲存到的本地路徑

key: **url的重要引數

"""num =

int(key)

*1000

oneskinimgurl =

""for skinpage in

range(0

,30):

imgurl = oneskinimgurl.

format

(num + skinpage)

img_response = self.getresponse(imgurl)

if img_response ==

none

:continue

self.downloadimg(path, img_response.content, skinpage)

defdownloadimg

(self, path, bresponse, skinpage)

:"""

path: 儲存的本地路徑

bresponse: 二進位制資料

skinpage: **頁數

("{} 寫入成功"

Python爬英雄聯盟lol全英雄面板

1.匯入所需模組 import requests import os 建立lol資料夾 os.mkdir lol 2.讀取js檔案,獲取英雄id hero id url response requests.get url,headers headers json list response.json...

Python爬蟲爬取LOL所有英雄面板

獲取id defget id url headers response requests.get url url,headers headers r response.json ids jsonpath.jsonpath r,heroid print ids print 英雄的個數為 str len...

Python爬取LOL英雄面板

python 爬蟲在官網上找到英雄 的真實鏈結,檢視多個後發現字首相同,後面對應為英雄的id和 的id,的id從00開始順序遞增,而英雄id跟網頁中的順序無關,需要找到英雄id。並沒有在 頁面和英雄頁面的元素中找到有關英雄id的內容,所以想到有可能是通過js檔案載入進來的。通過chrome工具找到跟...