91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0.01M
    文件類型: .py
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-09
  • 語言: Python
  • 標簽: 其他??

資源簡介

spider_LOL.py

資源截圖

代碼片段和文件信息

“““
#?1.爬取網頁
#?2.解析數據
#?3.保存數據
“““
from?bs4?import?BeautifulSoup #?網頁解析,獲取數據
import?re #?正則表達式,進行文字匹配
import?urllib.request
import?urllib.error #?指定URL,獲取網絡數據
import?xlwt #?進行excel操作
import?sqlite3 #?進行SQLite數據庫操作
import?json #?json類型解碼
import?requests
import?os


def?main():
“““
主函數
:return:
“““
#?base_url?=?“https://lol.qq.com/data/info-heros.shtml?id=“
base_url?=?“https://game.gtimg.cn/images/lol/act/img/js/hero/“
data_list?=?get_data(base_url)
save_path?=?‘.\\LOL英雄資料.xls‘
print(data_list)
save_data(data_list?save_path)
save_image(data_list)


#?正則表達式匹配查找所有英雄id
find_hero_id?=?re.compile(r‘{“heroId“:“(\d*)“‘) #?英雄id
find_name?=?re.compile(r‘“name“:“(.*)““alias‘) #?英雄名字
find_title?=?re.compile(r‘“title“:“(.*)““roles‘) #?title
find_alias?=?re.compile(r‘“alias“:“(.*)““title‘) #?英雄別名
find_roles?=?re.compile(r‘“roles“:(.*)“shortBio‘) #?roles
find_skin_id?=?re.compile(r‘“skinId“:“(\d*)“‘) #?皮膚id
find_chromas_BelongId?=?re.compile(r‘“chromasBelongId“:“(\d*)“‘)


def?get_data(base_url):
“““
獲得數據并解析
:return:
“““
data_list?=?[]
list_url?=?“https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js“
hero_list?=?ask_url(list_url)

#?解析網頁獲取英雄id
js?=?json.dumps(hero_list?sort_keys=True?ensure_ascii=False?indent=3)
js?=?json.loads(js?encoding=“utf-8“)
#?print(js)
hero_id?=?re.findall(find_hero_id?js)
#?print(hero_id)

#?for?i?in?range(100?101):
for?i?in?range(len(hero_id)):
data?=?[]
data.append(hero_id[i]) #?添加英雄id
url?=?base_url?+?hero_id[i]?+?“.js“
html?=?ask_url(url)

#?英雄名字
name?=?re.findall(find_name?html)[0]
#?strip()?方法用于移除字符串頭尾指定的字符(默認為空格或換行符)或字符序列。
#?split()?方法可以實現將一個字符串按照指定的分隔符切分成多個子串,這些子串會被保存到列表中(不包含分隔符),作為方法的返回值反饋回來
#?print(name.strip().split(r‘\u‘))
#?print(name.encode(‘unicode_escape‘).decode(‘utf8‘))
temp_name?=?name.split(r‘\u‘)[1:]
#?print(‘‘.join([chr(int(s?16))for?s?in?temp_name]))
hero_name?=?‘‘.join([chr(int(s?16))for?s?in?temp_name])
data.append(hero_name) #?添加英雄名字
#?print(hero_name)

#?英雄title
title?=?re.findall(find_title?html)[0]
temp_title?=?title.split(r‘\u‘)[1:]
hero_title?=?‘‘.join([chr(int(s?16))for?s?in?temp_title])
data.append(hero_title)
#?print(hero_title)

#

評論

共有 條評論