范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

英雄联盟Python爬虫

  英雄联盟Python爬虫
  英雄主界面qq https://lol.qq.com/data/info-heros.shtml
  1.英雄爬取
  https://lol.qq.com/data/info-heros.shtml
  get方法获取指定英雄信息。
  https://lol.qq.com/data/info-heros.shtml?id=xxx
  id=xxx
  2.JS获取所有英雄信息import json  import requests from faker import Factory from bs4 import BeautifulSoup  f = Factory.create()   def get_all_heros():     url = "https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js"     headers = {         "user-agent": f.user_agent()     }     r = requests.get(url, headers=headers)     r.encoding = r.apparent_encoding     c = r.text     l = json.loads(c)["hero"]     for i in l[:50]:         print("ID: {0} 姓名:{1} 别名:{2}".format(i["heroId"], i["name"], i["alias"]))   if __name__ == "__main__":     get_all_heros()
  效果:
  3.爬取比赛数据第一个LOL网页爬取
  http://www.wanplus.com/lol/playerstats
  用到了csrf-token,post请求需要携带set-cookies 中的csrf-token即可。 import json import time  import requests from faker import Factory from urllib import parse  f = Factory.create()   def get_token():     url = "http://www.wanplus.com/lol/playerstats"     headers = {         "user-agent": f.user_agent(),         "Referer": "http://www.wanplus.com/lol/teamstats",         "Host": "www.wanplus.com",     }     r = requests.get(url, headers=headers, allow_redirects=False)     r.encoding = r.apparent_encoding     c = r.cookies     r.close()     myCookies = c.get_dict()     # print(myCookies)     return str(int(c.get("wanplus_csrf")[9:]) + int(16777216)), myCookies   def get_competition():     url = "http://www.wanplus.com/ajax/stats/list"     token, myCookies = get_token()     headers = {         "user-agent": f.user_agent(),         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",         "Host": "www.wanplus.com",         "Origin": "http://www.wanplus.com",         "Referer": "http://www.wanplus.com/lol/playerstats",         "X-CSRF-Token": token,         "X-Requested-With": "XMLHttpRequest",     }     formdata = {         "_gtk": token,         "draw": "1",         "columns[0][data]": "order",         "columns[0][name]": "",         "columns[0][searchable]": "true",         "columns[0][orderable]": "false",         "columns[0][search][value]": "",         "columns[0][search][regex]": "false",         "columns[1][data]": "playername",         "columns[1][name]": "",         "columns[1][searchable]": "true",         "columns[1][orderable]": "false",         "columns[1][search][value]": "",         "columns[1][search][regex]": "false",         "columns[2][data]": "teamname",         "columns[2][name]": "",         "columns[2][searchable]": "true",         "columns[2][orderable]": "false",         "columns[2][search][value]": "",         "columns[2][search][regex]": "false",         "columns[3][data]": "meta",         "columns[3][name]": "",         "columns[3][searchable]": "true",         "columns[3][orderable]": "false",         "columns[3][search][value]": "",         "columns[3][search][regex]": "false",         "columns[4][data]": "appearedTimes",         "columns[4][name]": "",         "columns[4][searchable]": "true",         "columns[4][orderable]": "true",         "columns[4][search][value]": "",         "columns[4][search][regex]": "false",         "columns[5][data]": "kda",         "columns[5][name]": "",         "columns[5][searchable]": "true",         "columns[5][orderable]": "true",         "columns[5][search][value]": "",         "columns[5][search][regex]": "false",         "columns[6][data]": "attendrate",         "columns[6][name]": "",         "columns[6][searchable]": "true",         "columns[6][orderable]": "true",         "columns[6][search][value]": "",         "columns[6][search][regex]": "false",         "columns[7][data]": "killsPergame",         "columns[7][name]": "",         "columns[7][searchable]": "true",         "columns[7][orderable]": "true",         "columns[7][search][value]": "",         "columns[7][search][regex]": "false",         "columns[8][data]": "mostkills",         "columns[8][name]": "",         "columns[8][searchable]": "true",         "columns[8][orderable]": "true",         "columns[8][search][value]": "",         "columns[8][search][regex]": "false",         "columns[9][data]": "deathsPergame",         "columns[9][name]": "",         "columns[9][searchable]": "true",         "columns[9][orderable]": "true",         "columns[9][search][value]": "",         "columns[9][search][regex]": "false",         "columns[10][data]": "mostdeaths",         "columns[10][name]": "",         "columns[10][searchable]": "true",         "columns[10][orderable]": "true",         "columns[10][search][value]": "",         "columns[10][search][regex]": "false",         "columns[11][data]": "assistsPergame",         "columns[11][name]": "",         "columns[11][searchable]": "true",         "columns[11][orderable]": "true",         "columns[11][search][value]": "",         "columns[11][search][regex]": "false",         "columns[12][data]": "mostassists",         "columns[12][name]": "",         "columns[12][searchable]": "true",         "columns[12][orderable]": "true",         "columns[12][search][value]": "",         "columns[12][search][regex]": "false",         "columns[13][data]": "goldsPermin",         "columns[13][name]": "",         "columns[13][searchable]": "true",         "columns[13][orderable]": "true",         "columns[13][search][value]": "",         "columns[13][search][regex]": "false",         "columns[14][data]": "lasthitPermin",         "columns[14][name]": "",         "columns[14][searchable]": "true",         "columns[14][orderable]": "true",         "columns[14][search][value]": "",         "columns[14][search][regex]": "false",         "columns[15][data]": "damagetoheroPermin",         "columns[15][name]": "",         "columns[15][searchable]": "true",         "columns[15][orderable]": "true",         "columns[15][search][value]": "",         "columns[15][search][regex]": "false",         "columns[16][data]": "damagetoheroPercent",         "columns[16][name]": "",         "columns[16][searchable]": "true",         "columns[16][orderable]": "true",         "columns[16][search][value]": "",         "columns[16][search][regex]": "false",         "columns[17][data]": "damagetakenPermin",         "columns[17][name]": "",         "columns[17][searchable]": "true",         "columns[17][orderable]": "true",         "columns[17][search][value]": "",         "columns[17][search][regex]": "false",         "columns[18][data]": "damagetakenPercent",         "columns[18][name]": "",         "columns[18][searchable]": "true",         "columns[18][orderable]": "true",         "columns[18][search][value]": "",         "columns[18][search][regex]": "false",         "columns[19][data]": "wardsplacedPermin",         "columns[19][name]": "",         "columns[19][searchable]": "true",         "columns[19][orderable]": "true",         "columns[19][search][value]": "",         "columns[19][search][regex]": "false",         "columns[20][data]": "wardskilledPermin",         "columns[20][name]": "",         "columns[20][searchable]": "true",         "columns[20][orderable]": "true",         "columns[20][search][value]": "",         "columns[20][search][regex]": "false",         "order[0][column]": "4",         "order[0][dir]": "desc",         "start": "0",         "length": "20",         "search[value]": "",         "search[regex]": "false",         "area": "",         "eid": "1065",         "type": "player",         "gametype": "2",         "filter": "{"team":{},"player":{},"meta":{}}",     }     # 字典转换为 k1 = v1 & k2 = v2     data = parse.urlencode(formdata)     # print(data)     r = requests.post(url, cookies=myCookies, data=data, headers=headers, allow_redirects=False)     r.encoding = r.apparent_encoding     c = r.text     # print("11111内容如下:----------------------------------------")     if len(c) < 100:         print("获取失败,重新获取!")         return False     print("获取成功!")     l = json.loads(c)["data"]     for i in l[:20]:         print("队伍编号: {0} 队伍名: {1} 玩家名称: {2}".format(["teamid"], i["teamname"], i["playername"]))     return True   def cookie_to_dic(mycookie):     dic = {}     for i in mycookie.split("; "):         dic[i.split("=")[0]] = i.split("=")[1]     return dic   if __name__ == "__main__":     while 1:         ok = get_competition()         if ok is True:             break #    test()
  第二个LOL网页数据爬取
  http://lol.admin.pentaq.com/
  没有任何反爬和csrf-token认证: from faker import Factory import requests import json  f = Factory.create()   def fun():     url = "http://lol.admin.pentaq.com/api/tournament_team_data?tour=29&patch="     headers = {         "user-agent": f.user_agent()     }     r = requests.get(url, headers=headers)     r.encoding = r.apparent_encoding     c = r.text     r.close()     l = json.loads(c)["data"]["teams_data"]     for i in l[:20]:         print("队伍名称: {0} 队伍ID:{1} win:{2}".format(i["team_full_name"], i["team_id"], i["win"]))   if __name__ == "__main__":     fun()
  第三个LOL网页数据爬取
  http://www.op.gg/champion/statistics
  采用BeautifulSoup 即可。 from faker import Factory import requests from bs4 import BeautifulSoup  f = Factory.create()   def fun():     url = "http://www.op.gg/champion/statistics"     headers = {         "user-agent": f.user_agent(),         "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8""     }     r = requests.get(url, headers=headers)     r.encoding = r.apparent_encoding     if r.status_code != 200:         return False     c = r.text     r.close()     # print(c)     if len(c) < 10000:         return False     html = BeautifulSoup(c, "html.parser")     l = html.find("tbody", class_="tabItem champion-trend-tier-TOP").find_all("tr")     for x in l[:5]:         a = x.find_all("td")         tmp = a[3]         b = tmp.find_all("p")         name = b[0].text         pos = b[1].text.replace("	","").replace(" ","")         print("rank: {0} name: {1} pos:{2} 胜率:{3} 登场率:{4}".format(a[0].text, name, pos, a[4].text, a[5].text))     return True # for c in l[:20]: #     a = c.find_all("td") #     tmp  = a[3] #     b = tmp.find_all("p") #     name  = b[0].text #     pos =  b[1].text #     print("rank: {0] name: {1} pos:{2} 胜率:{3} 登场率:{4}".format(a[0].text,name,pos,a[4].text,a[5].text))   if __name__ == "__main__":     while True:         ok = fun()         if ok:             break 4.多线程爬取LOL英雄皮肤图片
  1.获取对应英雄url 列表,函数get_url_list()
  2.下载对应的图片保存到文件夹download()
  3.main()开启多线程执行爬取任务 import requests import json import os from faker import Factory from multiprocessing.dummy import Pool as ThreadPool import time  f = Factory.create() headers = {     "user-agent": f.user_agent() }   def get_url_list():     url = "https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js"     r = requests.get(url, headers=headers)     r.encoding = r.apparent_encoding     c = r.text     Heros = json.loads(c)["hero"]  # 156个hero信息     idList = []     for hero in Heros:         hero_id = hero["heroId"]         idList.append(hero_id)    # print(idList)   def spider(url):     r = requests.get(url, headers=headers)     r.encoding = r.apparent_encoding     c = r.text     r.close()     res_dict = json.loads(c)     skins = res_dict["skins"]  # 15个hero信息     for index, hero in enumerate(skins):  # 这里使用到enumerate获取下标,以便文件图片命名;         item = {}  # 字典对象         item["name"] = hero["heroName"]         item["skin_name"] = hero["name"]          if hero["mainImg"] == "":             continue         item["imgLink"] = hero["mainImg"]     #   print(item)         download(index + 1, item)   def download(index, contdict):     name = contdict["name"]     path = "皮肤/" + name     if not os.path.exists(path):         os.makedirs(path)      content = requests.get(contdict["imgLink"], headers=headers).content     with open("./皮肤/" + name + "/" + contdict["skin_name"] + str(index) + ".jpg", "wb") as f:         f.write(content)   def main():     start = time.time()     pool = ThreadPool(6)     page = []     for i in range(1, 11):         newpage = "https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js".format(i)         print(newpage)         page.append(newpage)     result = pool.map(spider, page)     pool.close()     pool.join()     end = time.time()     print("用时:", end-start)   if __name__ == "__main__":     main()

只要几小时!机器学习能快速揭示细胞内部结构不需数年只要几小时机器学习能快速揭示细胞内部结构科技日报北京10月10日电(记者张梦然)借由高功率显微镜和机器学习,美国科学家研发出一种新算法,可在整个细胞的超高分辨率图像中自动识ABB工业机器人基本运动指令首先先了解abb编程语言,ABB编程语言叫RAPID,属于运动级编程语言,运动级语言,离不开相关的运动指令,我下面先列举4个,moveJ,moveL,moveC,moveAbsJA地方国资领投,换电独角兽奥动新能源再获15亿B轮融资21世纪经济报道记者杜巧梅报道近日,国内换电独角兽公司奥动新能源宣布已经完成B轮战略融资15亿元。据介绍,本轮融资政府平台基金广州金控与广州开发区凯得组建专项基金,与中国石化恩泽基36氪首发国产数据库厂商聚云位智获亿元级B轮融资,将拓展更多垂直行业分析场景作者咏仪编辑苏建勋36氪获悉,聚云位智获近亿元B轮融资,由达晨财智领投,朗玛峰创投中翔资本跟投。乐中资本担任本轮财务顾问。本轮融资将用于技术和产品持续研发。数据库是计算机领域三大基小米年轻人的第二台洗衣机9月27日发布IT之家9月24日消息小米宣布,将于9月27日发布一款洗衣机产品,号称年轻人的第二台洗衣机。从官方宣传语来看,该洗衣机可清洗贴身衣物(内衣)等。动动手指就可以,TA来解决手洗内衣的又一行或要爆发?5年后规模会有2262亿,如今正规企业仅27家十几年前,国内能买得起汽车的家庭少之又少,随着时代发展,我国国民经济水平提高,每家每户都能拥有一辆代步车,而国家大力提倡环保出行方式,不少消费者将目光转向新能源汽车。根据数据显示,天玑2000与骁龙898展开竞争,消费者和手机厂商都所乐见的天玑2000芯片将于今年年底小批量出货。目前,首批厂商正在进行相关测试。如果进展顺利,可能恰逢骁龙898上市时间,正面竞争。高通骁龙898采用全新的1322四集群架构。超大核基于C9月27日发!小米官宣新品年轻人的第二台洗衣机来了9月24日消息,小米智能生态官方微博宣布,将于9月27日发布洗衣机新品,宣传语为年轻人的第二台洗衣机。小米从昨天就开始了微博预热,依旧是一天放出一点点信息的套路。昨日的微博文案为囤商用可办公,家用可娱乐的好伴侣,攀升电脑2021款超薄笔记本推荐电脑对于不少人来说其实只需要能够完成非常简单的办公和影音娱乐需求就已经足够了,需求再高点可能就是玩一下低配置的热门游戏或者做一些简单的PS设计。对于这种需求的用户来说,笔记本的性价苹果股东怒斥库克苹果的环保做法是虚伪的9月15日的苹果发布会,如果你是全程看完的话肯定对一个词语十分熟悉环保,几乎每一个新的产品介绍完毕后,苹果的发言人都要提到环保。环保在最近两年里一直都是苹果的主题之一,为了环保而取手机电脑绝佳伴侣,雕塑家MU156LR让生产力翻倍随着高效办公的提倡,越来越多上班族开始着眼于提升自身的生产力水平。外出办公时希望自己的手机拥有笔记本电脑一样的超大屏幕,同时处理多项事务时希望屏幕可以再宽一点再宽一点。面对上述办公
马化腾我们对AI的未知仍然大于已知要推动AI向善新京报贝壳财经讯(记者罗亦丹)7月8日,腾讯公司董事会主席马化腾在2021世界人工智能大会开幕式现场表示,过去一年,AI在医疗城市治理非接触服务等领域为人们的生活带来越来越多的便利新车丨小鹏G3i实车解析续航520公里,20万级智能SUV正式亮相文懂车帝原创潘梓春懂车帝原创产品作为新造车势力推出的首批车型,小鹏G3在问世之初确实吸引到了一波关注。不过随着新能源车型的不断推出,小鹏G3似乎一度因为产品特征不够明晰,而显得有些互联网那些小项目,项目小利润却不一定少近几年互联网是越来越普及了,几百现在人手都有智能手机,不论大人小孩,甚至老人,都有智能手机,智能手机相比以前的2g手机,主要是能接受的信息更多了,我们其实现在就是生活在一个信息有点南卡骨传导蓝牙耳机粉色款,满足你的少女心,给你优质听歌体验一般来说,想到粉色,很多人都认为是女生的专属颜色,这个颜色让人感到浪漫和清新,当粉色和科技融合,就会碰撞出不一样的感受。南卡前段时间推出的RunnerCCII骨传导蓝牙耳机,不仅在iPad的最大劲敌?华为再添一名新产品干将华为在昨天(6日)发布了全新的平板产品华为MatePad11。这款全新的产品会给消费者带来怎样的配置,相信这一定是生产力的一款性价比产品。华为这款平板采用了骁龙865的处理器,再搭董明珠格力将引进鸿蒙系统继魅族之后,华为又收获一位强力盟友。据韩国Zdnet新闻网报道,格力总裁董明珠表示今后将引进鸿蒙操作系统。报道中提到,格力是世界500强中国传统家电企业,是中国空调市场占有率最大的丰田MIRAI氢能源汽车续航超1000公里!氢气到底贵不贵?日本氢能源汽车(FCV)的标杆企业丰田汽车,目前发售最具代表性氢能源车型为丰田MIRAI(MIRAI是日语未来的发音,意指代表着新能源汽车的未来)。丰田MIRAI氢能源汽车目前在日小鹏汽车上市首日破发网友想回国收割,现在都不行了小鹏汽车首日破发日前,小鹏汽车正式在港交所宣布上市,小鹏汽车也将成为今年首个纽约香港两地双重主要上市中概股。据悉,小鹏汽车在全球发售8500万股A类普通股票,本次IPO募资超过14华为出手!谷歌恐惧!营销号真让我绷不住了作为一个科技自媒体人,我每天都在关注科技圈有啥新消息。按说我看了那么久,对一些寻常的新闻已经麻木了。但是昨天,我真被一条消息整的绷不住了。说实话,大家都是做这行的,我能理解这个作者乘联会6月新能源乘用车批发销量达到22。7万辆同比增长165。716月全国乘用车市场回顾零售2021年6月乘用车市场零售达到157。5万辆,同比2020年6月下降5。1,而且相较2019年6月下降11,前几个月的低基数增量在本月基本消除。6月零懂手机的人建议,目前这4部手机最值得买,说完我连忙掏钱平常你们买手机会不会问身边的懂手机的朋友?相信每个人或多或少都是会的!前些天,我就问了一个朋友,说当时618的时候后悔没有入手,现在又想买手机了,哪一些值得买?结果他一下子就给我列