电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

瀏覽:3日期:2022-06-21 17:42:13

本次爬取網站為opgg,網址為:” http://www.op.gg/champion/statistics”

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

由網站界面可以看出,右側有英雄的詳細信息,以Garen為例,勝率為53.84%,選取率為16.99%,常用位置為上單

現對網頁源代碼進行分析(右鍵鼠標在菜單中即可找到查看網頁源代碼)。通過查找“53.84%”快速定位Garen所在位置

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

由代碼可看出,英雄名、勝率及選取率都在td標簽中,而每一個英雄信息在一個tr標簽中,td父標簽為tr標簽,tr父標簽為tbody標簽。

對tbody標簽進行查找

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

代碼中共有5個tbody標簽(tbody標簽開頭結尾均有”tbody”,故共有10個”tbody”),對字段內容分析,分別為上單、打野、中單、ADC、輔助信息

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

以上單這部分英雄為例,我們需要首先找到tbody標簽,然后從中找到tr標簽(每一條tr標簽就是一個英雄的信息),再從子標簽td標簽中獲取英雄的詳細信息

二、爬取步驟

爬取網站內容->提取所需信息->輸出英雄數據

getHTMLText(url)->fillHeroInformation(hlist,html)->printHeroInformation(hlist)

getHTMLText(url)函數是返回url鏈接中的html內容

fillHeroInformation(hlist,html)函數是將html中所需信息提取出存入hlist列表中

printHeroInformation(hlist)函數是輸出hlist列表中的英雄信息

三、代碼實現1、getHTMLText(url)函數

def getHTMLText(url): #返回html文檔信息 try:r = requests.get(url,timeout = 30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.text #返回html內容 except:return ''2、fillHeroInformation(hlist,html)函數

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

以一個tr標簽為例,tr標簽內有7個td標簽,第4個td標簽內屬性值為'champion-index-table__name'的div標簽內容為英雄名,第5個td標簽內容為勝率,第6個td標簽內容為選取率,將這些信息存入hlist列表中

def fillHeroInformation(hlist,html): #將英雄信息存入hlist列表 soup = BeautifulSoup(html,'html.parser') for tr in soup.find(name = 'tbody',attrs = 'tabItem champion-trend-tier-TOP').children: #遍歷上單tbody標簽的兒子標簽if isinstance(tr,bs4.element.Tag): #判斷tr是否為標簽類型,去除空行 tds = tr(’td’) #查找tr標簽下的td標簽 heroName = tds[3].find(attrs = 'champion-index-table__name').string #英雄名 winRate = tds[4].string #勝率 pickRate = tds[5].string #選取率 hlist.append([heroName,winRate,pickRate]) #將英雄信息添加到hlist列表中3、printHeroInformation(hlist)函數

def printHeroInformation(hlist): #輸出hlist列表信息 print('{:^20}t{:^20}t{:^20}t{:^20}'.format('英雄名','勝率','選取率','位置')) for i in range(len(hlist)): i = hlist[i] print('{:^20}t{:^20}t{:^20}t{:^20}'.format(i[0],i[1],i[2],'上單'))4、main()函數

網站地址賦值給url,新建一個hlist列表,調用getHTMLText(url)函數獲得html文檔信息,使用fillHeroInformation(hlist,html)函數將英雄信息存入hlist列表,再使用printHeroInformation(hlist)函數輸出信息

def main(): url = 'http://www.op.gg/champion/statistics' hlist = [] html = getHTMLText(url) #獲得html文檔信息 fillHeroInformation(hlist,html) #將英雄信息寫入hlist列表 printHeroInformation(hlist) #輸出信息四、結果演示1、網站界面信息

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

2、爬取結果

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

Python爬取OPGG上英雄聯盟英雄勝率及選取率信息的操作

五、完整代碼

import requests #導入requests庫import bs4 #導入bs4庫from bs4 import BeautifulSoup #導入BeautifulSoup庫def getHTMLText(url): #返回html文檔信息 try:r = requests.get(url,timeout = 30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.text #返回html內容 except:return ''def fillHeroInformation(hlist,html): #將英雄信息存入hlist列表 soup = BeautifulSoup(html,'html.parser') for tr in soup.find(name = 'tbody',attrs = 'tabItem champion-trend-tier-TOP').children: #遍歷上單tbody標簽的兒子標簽if isinstance(tr,bs4.element.Tag): #判斷tr是否為標簽類型,去除空行 tds = tr(’td’) #查找tr標簽下的td標簽 heroName = tds[3].find(attrs = 'champion-index-table__name').string #英雄名 winRate = tds[4].string #勝率 pickRate = tds[5].string #選取率 hlist.append([heroName,winRate,pickRate]) #將英雄信息添加到hlist列表中def printHeroInformation(hlist): #輸出hlist列表信息 print('{:^20}t{:^20}t{:^20}t{:^20}'.format('英雄名','勝率','選取率','位置')) for i in range(len(hlist)):i = hlist[i]print('{:^20}t{:^20}t{:^20}t{:^20}'.format(i[0],i[1],i[2],'上單'))def main(): url = 'http://www.op.gg/champion/statistics' hlist = [] html = getHTMLText(url) #獲得html文檔信息 fillHeroInformation(hlist,html) #將英雄信息寫入hlist列表 printHeroInformation(hlist) #輸出信息main()

如果需要爬取打野、中單、ADC或者輔助信息,只需要修改

fillHeroInformation(hlist,html)

函數中的

for tr in soup.find(name = 'tbody',attrs = 'tabItem champion-trend-tier-TOP').children語句

將attrs屬性值修改為

'tabItem champion-trend-tier-JUNGLE'

'tabItem champion-trend-tier-MID'

'tabItem champion-trend-tier-ADC'

'tabItem champion-trend-tier-SUPPORT'

等即可!

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 合肥白癜风医院_[治疗白癜风]哪家好_合肥北大白癜风医院 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | 陶瓷砂磨机,盘式砂磨机,棒销式砂磨机-无锡市少宏粉体科技有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 好杂志网-首页| 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 特种阀门-调节阀门-高温熔盐阀-镍合金截止阀-钛阀门-高温阀门-高性能蝶阀-蒙乃尔合金阀门-福建捷斯特阀门制造有限公司 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 没斑啦-专业的祛斑美白嫩肤知识网站-去斑经验分享 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 外观设计_设备外观设计_外观设计公司_产品外观设计_机械设备外观设计_东莞工业设计公司-意品深蓝 | 2025第九届世界无人机大会| 飞利浦LED体育场灯具-吸顶式油站灯-飞利浦LED罩棚灯-佛山嘉耀照明有限公司 | 动物麻醉机-数显脑立体定位仪-北京易则佳科技有限公司 | 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 衬氟旋塞阀-卡套旋塞阀-中升阀门首页 | 名律网-法律问题咨询-找律师-法律知识| 权威废金属|废塑料|废纸|废铜|废钢价格|再生资源回收行情报价中心-中废网 | 亚克力制品定制,上海嘉定有机玻璃加工制作生产厂家—官网 | 我车网|我关心的汽车资讯_汽车图片_汽车生活!| 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 代做标书-代写标书-专业标书文件编辑-「深圳卓越创兴公司」 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | 泰国试管婴儿_泰国第三代试管婴儿费用|成功率|医院—新生代海外医疗 | 机制砂选粉机_砂石选粉机厂家-盐城市助成粉磨科技有限公司 | 深圳APP开发公司_软件APP定制开发/外包制作-红匣子科技 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 深圳希玛林顺潮眼科医院(官网)│深圳眼科医院│医保定点│香港希玛林顺潮眼科中心连锁品牌 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 农业四情_农业气象站_田间小型气象站_智慧农业气象站-山东风途物联网 |