嗨嘍~大家好呀,這里是魔王吶
靖宇網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
Python 3.8
Pycharm
requests ---> 數(shù)據(jù)請求模塊 需要安裝 pip install requests
re 正則表達(dá)式 內(nèi)置模塊 不需要安裝
os 文件操作模塊 內(nèi)置模塊 不需要安裝 --> 自動(dòng)創(chuàng)建文件夾 把每個(gè)英雄都自動(dòng)創(chuàng)建對應(yīng)文件
確定需求, 確定采集目標(biāo)
通過開發(fā)者工具抓包分析, 分析我們想要數(shù)據(jù)內(nèi)容來自于那個(gè)url地址
F12 或者 鼠標(biāo)右鍵點(diǎn)擊檢查 選擇 network(網(wǎng)絡(luò)) 刷新網(wǎng)頁
去分析圖片url地址是什么 ---> 選擇 Img 可以查找圖片url地址
505 表示英雄ID
2 皮膚第幾個(gè) ---> 通過皮膚名字對應(yīng)他的皮膚鏈接
想要獲取 yao 皮膚數(shù)據(jù)
# 導(dǎo)入數(shù)據(jù)請求模塊 ---> 第三方模塊 需要 在cmd里面進(jìn)行安裝 pip install requests import requests # 導(dǎo)入正則模塊---> 內(nèi)置模塊 不需要安裝 import re # 導(dǎo)入文件操作模塊---> 內(nèi)置模塊 不需要安裝 import os # 確定網(wǎng)址 link= 'https://pvp.qq.com/web/js/herolist.json' # 模擬偽裝瀏覽器---> 請求頭 headers= { # user-agent 用戶代理 表示瀏覽器基本身份標(biāo)識(shí) 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } # 發(fā)送請求 json_data= requests.get(url=link, headers=headers).json() # for循環(huán)遍歷 for index in json_data: # 字典鍵值對取值 根據(jù)冒號左邊的內(nèi)容[鍵],提取冒號右邊的內(nèi)容[值] hero_id= index['ename'] hero_name= index['cname'] # 設(shè)定文件夾路徑 相對路徑 file= f'img\\{hero_name}\\' if not os.path.exists(file): os.makedirs(file) """ 1. 發(fā)送請求, 模擬瀏覽器對于url地址發(fā)送請求 - headers 字典數(shù)據(jù)類型, 構(gòu)建完整鍵值對 - 請求頭參數(shù) 可以直接在開發(fā)者工具復(fù)制粘貼 - 使用什么請求方法, 根據(jù)開發(fā)者工具來 """ # 確定請求url地址 url= f'https://pvp.qq.com/web/herodetail/{hero_id}.shtml' # 模擬偽裝瀏覽器---> 請求頭 headers= { # user-agent 用戶代理 表示瀏覽器基本身份標(biāo)識(shí) 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } # 發(fā)送請求--->200]> 響應(yīng)對象: <>表示對象 response 響應(yīng)回復(fù) 200 狀態(tài)碼 表示請求成功 response= requests.get(url=url, headers=headers) # 亂碼了 怎么辦? ---> 你要根據(jù)網(wǎng)頁編碼來 response.encoding = 'gbk' # 自動(dòng)識(shí)別編碼 response.encoding= response.apparent_encoding # 獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù) 文本數(shù)據(jù) print(response.text) """ 解析數(shù)據(jù) re正則 會(huì)1 不會(huì)2 re.findall() 從什么地方 去找什么數(shù)據(jù) 從 response.text 里面 去找 data-imgname="(.*?)"> 其中 (.*?) 就是我們要的數(shù)據(jù) """ title_list = re.findall('data-imgname="(.*?)">', response.text)[0] # 鹿靈守心&0|森&0|遇見神鹿&71|時(shí)之祈愿&94|時(shí)之愿境&42 title_list= re.sub('&\d+', '', title_list).split('|') print(title_list) # for循環(huán)for num in range(1, 6): len() 統(tǒng)計(jì)列表元素個(gè)數(shù) for num in range(1, len(title_list) +1): # 列表取值, 根據(jù)索引位置,索引位置從0開始計(jì)數(shù) img_name= title_list[num-1] # 構(gòu)建圖片url地址 img_url= f'https://game.gtimg.cn/images/yxzj/img/skin/hero-info/{hero_id}/{hero_id}-bigskin-{num}.jpg' print(img_name, img_url) # 保存數(shù)據(jù)---> 發(fā)送請求 獲取數(shù)據(jù) 二進(jìn)制數(shù)據(jù) img_content= requests.get(url=img_url, headers=headers).content with open(file+ img_name + '.jpg', mode='wb') as f: f.write(img_content)