国足晋级12强 | 爬取《NBA30支球队》“现役球员信息”,再来看看篮球吧!

我爸对篮球真可是相当钟爱,基本是每个赛季必追。我就不同了,自从高中毕业后,就再也没怎么看篮球了。于是,我就有感而发,是否可以爬取现役球员的一些信息,看看我还有几个认识的。
在这里插入图片描述

1. 页面分析

我爬取的页面是腾讯体育,链接如下:
https://nba.stats.qq.com/player/list.htm
在这里插入图片描述
观察上图:左边展示的分别是NBA的30支球队,右边就是每只球队对应球员的详细信息。

此时思路就很清晰了,我们每点击一支球员,右侧就会出现该球队的球员信息。

整个爬虫思路简化如下:

  • ① 获取每支球员页面的url;
  • ② 利用Python代码获取每个网页中的数据;
  • ③ 将获取到的数据,整理后存储至不同的数据库;

那么,现在要做的就是找到每支球员页面的url,去发现它们的关联。

我们每点击一支球队,复制它的url,下面我复制了三支球队的页面url,如下所示:

# 76人
https://nba.stats.qq.com/player/list.htm#teamId=20# 火箭
https://nba.stats.qq.com/player/list.htm#teamId=10# 热火
https://nba.stats.qq.com/player/list.htm#teamId=14

观察上述url,可以发现:url基本一模一样,除了参数teamId对应的数字不一样,完全可以猜测出,这就是每支球队对应的编号,30支球队30个编号。

只要是涉及到“腾讯”二字,基本都是动态网页,我之前碰到过好多次。基础方法根本获取不到数据,不信可以查看网页源码试试:点击鼠标右键——>点击查看网页源代码。
部分截图如下
接着,将网页中的某个数据(你要获取的)复制,然后再源代码页面中,点击crtl + f,调出“搜索框”,将复制的数据粘贴进去。如果和上图一样,出现0条记录,则基本可以判断该网页属于动态网页,直接获取源码,一定找不到你要的数据。

因此如果你想要获取页面中的数据,使用selenuim自动化爬虫,是其中一种办法。

2. 数据爬取

关于selenium的的使用配置,我在一篇文章中详细讲述过,贴上这个链接供大家参考:
《https://mp.weixin.qq.com/s/PUPmpbiCJqRW8Swr1Mo2UQ》

我喜欢用xpath,对于本文数据的获取,我都将使用它。关于xpath的使用,那就是另一篇文章了,这里就不详细讲述。
在这里插入图片描述
说了这么多,咋们直接上代码吧!【代码中会有注释】

from selenium import webdriver# 创建浏览器对象,该操作会自动帮我们打开Google浏览器窗口
browser = webdriver.Chrome()# 调用浏览器对象,向服务器发送请求。该操作会打开Google浏览器,并跳转到“百度”首页
browser.get("https://nba.stats.qq.com/player/list.htm#teamId=20")# 最大化窗口
browser.maximize_window()# 获取球员中文名
chinese_names = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[2]/a')
chinese_names_list  = [i.text for i in chinese_names]# 获取球员英文名
english_names = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[3]/a')
english_names_list = [i.get_attribute('title') for i in english_names] # 获取属性# 获取球员号码
numbers = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[4]')
numbers_list = [i.text for i in numbers_list]# 获取球员位置
locations = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[5]')
locations_list = [i.text for i in locations_list]# 获取球员身高
heights = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[6]')
heights_list = [i.text for i in heights_list]# 获取球员体重
weights = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[7]')
weights_list = [i.text for i in weights_list]# 获取球员年龄
ages = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[8]')
ages_list = [i.text for i in ages_list]# 获取球员球龄
qiu_lings = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[9]')
qiu_lings_list = [i.text for i in qiu_lings_list]

这里只爬取了一支球队,剩下29支球队球员数据的爬取任务交给你们。整个代码部分,基本上大同小异,我写了一个,你们照葫芦画瓢。【就一个循环,还不简单呀!】

3. 存储至txt

将数据保存到txt文本的操作非常简单,txt几乎兼容所有平台,唯一的缺点就是不方便检索。要是对检索和数据结构要求不高,追求方便第一的话,请采用txt文本存储。

注意:txt中写入的是str字符串。

txt文档写入数据的规则是这样的:从头开始,从左至右一直填充。当填充至最右边后,会被挤到下一行。因此,如果你想存入的数据规整一点,可以自动填入制表符“\t”和换行符“\n”。

以本文为例,将获取到的数据,存储到txt文本中。

for i in zip(chinese_names_list,english_names_list,numbers_list,locations_list,heights_list,weights_list,ages_list,qiu_lings_list):with open("NBA.txt","a+",encoding="utf-8") as f:# zip函数,得到的是一个元组,我们需要将它转换为一个字符串f.write(str(i)[1:-1])# 自动换行,好写入第2行数据f.write("\n")f.write("\n")

部分截图如下:
在这里插入图片描述

4. 存储至excel

excel有两种格式的文件,一种是csv格式,一种是xlsx格式。将数据保存至excel,当然是使用pandas库更方便。

import pandas as pd# 一定要学会组织数据
df = pd.DataFrame({"中文名": chinese_names_list,"英文名": english_names_list,"球员号码": numbers_list,"位置": locations_list,"身高": heights_list,"体重": weights_list,"年龄": ages_list,"球龄": qiu_lings_list})# to_excel()函数
df.to_excel("NBA.xlsx",encoding="utf-8",index=None)

结果如下:
在这里插入图片描述

5. 存储至mysql

MySQL是一个关系型数据库,数据是采用类excel的二维表来保存数据的,即行、列组成的表,每一行代表一条记录,每一列代表一个字段。

关于Python操作MySQL数据库,我曾经写了一篇博客,大家可以参考以下:
http://blog.csdn.net/weixin_41261833/article/details/103832017

为了让大家更明白这个过程,我这里分布为大家讲解:

① 创建一个表nba

我们想要往数据库中插入数据,首先需要建立一张表,这里命名为nba。

import pymysql# 1. 连接数据库
db = pymysql.connect(host='localhost',user='root', password='123456',port=3306, db='demo', charset='utf8')# 2. 创建一个表
# 创建一个游标对象;
cursor = db.cursor()# 建表语句;
sql = """create table NBA(chinese_names_list varchar(20),english_names_list varchar(20),numbers_list varchar(20),locations_list varchar(20),heights_list varchar(20),weights_list varchar(20),ages_list varchar(20),qiu_lings_list varchar(20))charset=utf8"""
# 执行sql语句;
cursor.execute(sql)# 断开数据库的连接;
db.close()
② 往表nba中插入数据
import pymysql# 1. 组织数据
data_list = []
for i in zip(chinese_names_list,english_names_list,numbers_list,locations_list,heights_list,weights_list,ages_list,qiu_lings_list):data_list.append(i)# 2. 连接数据库
db = pymysql.connect(host='localhost',user='root', password='123456',port=3306, db='demo', charset='utf8')# 创建一个游标对象;
cursor = db.cursor()# 3. 插入数据
sql = 'insert into nba(chinese_names_list,english_names_list,numbers_list,locations_list,heights_list,weights_list,ages_list,qiu_lings_list) values(%s,%s,%s,%s,%s,%s,%s,%s)'try:cursor.executemany(sql,data_list)db.commit()print("插入成功")
except:print("插入失败")db.rollback()
db.close()

结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/67743.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“元宇宙”是什么?涂子沛:人可在数据空间“复活”

点击上方“程序猿技术大咖”,关注并选择“设为星标” 回复“加群”获取入群讨论资格! 来源:https://view.inews.qq.com/a/20211204A047MY00 “最近热火的‘元宇宙’,其实是在原有的空间中增加了数据空间,在这个数据空间…

计算机学院篮球赛,“新生杯”,篮球热火——记重庆大学计算机学院小组篮球赛第五场...

2016年11月3日中午12点40分,梅园篮球场,等待着与计算机学院少年的篮球之约,阳光正好,少年风华正茂。 参与篮球赛第五场的共有两组比赛。第一组是16级物联VS16级计科6班,由15级计科1班的洪浩和16级计科3班的李润南担任裁…

云中,雁门关外

大同,塞外,黄土高坡,云中。 晋剧、北路梆子、耍孩、数来宝,汇聚一堂。 这里是贾樟柯的英雄地:《任逍遥》《江湖儿女》皆出于此地。这里的男人说话爱拍肩膀拍胸脯拍大腿。 大同的天气四季分明,常年少雨&…

热火赛前获专家一致看好 凯尔特人难再入总决赛

资料图:詹姆斯在场上仍然势不可挡。中新社发 张炜 摄 中新网5月28日 随着凯尔特人在抢七中大胜费城76人,NBA东部决赛的对阵双方也已尘埃落定。对此,ESPN邀请了14位篮球专家对东区决赛的前景进行了预测。结果显示,迈阿密热火的支持…

最近抖音热火的华为太空人手表,附源码下载

一、效果展示 用javascript写的一个太空人表盘。源码请从文章末尾获取下载 原文地址:https://blog.csdn.net/weixin_43532890/article/details/115047940 源码下载:https://pan.baidu.com/s/1SFOFQCIW1Jn9J5u0HjTQKg 密码: 5mv9

猜想:企业SaaS热火之后……

企业SaaS目前热火涌动,尤其在云计算、大数据、移动应用、互联网金融等新概念簇拥下,创业者、投资者、客户似乎对于这一并不很新的概念追捧度大幅提升。 那企业SaaS未来将会怎样,试着做些猜想。 从碎片化到集成 现在的企业SaaS业务基本都是从某…

AI数据标注工具Doccano

Doccano是一款开源的标注工具,用于自然语言处理和机器学习任务。它提供了用户友好的界面,使用户能够轻松地标注文本、序列标注、文本分类和文本配对等任务。doccano支持多种标注格式,并且可以方便地与其他机器学习工具集成。它的简单性和灵活…

人工智能会率先发现外星生命吗?

重要提示 亲爱的读者朋友,微信又改版啦!如果没有加星标,或者不常读我们的文章,我们的文章就不会在您的“订阅号消息”里大图展示,甚至不被推送,太容易错过了。ಥ_ಥ 请星标Nature Portfolio,常读…

chatgpt赋能python:Python界面的黑色设置

Python界面的黑色设置 Python是一种高级编程语言,广泛应用于各种领域。然而,许多人在使用Python编写代码时,可能会对其默认的白色界面颜色感到厌烦。本文将介绍如何将Python界面设置为黑色,以提高编程体验。 为什么要将Python界…

在latex中使用GB/T 7714—2015参考文献著录规则

毕业论文中的参考文献要求参照《文后参考文献著录规则》(GB/T 7714-2005)的要求书写: http://www.cessp.org.cn/uploads/1/file/public/201607/20160708142456_8mqgu0dpgk.pdf 我直接使用的是 gbt7714 package, GitHub 链接: ht…

Latex-bibliographystyle参考文献风格介绍(按照姓氏排序)

https://jingyan.baidu.com/article/574c52196e12496c8d9dc1c5.html(百度知道) https://www.jianshu.com/p/2e18415cfa72(这里有更详细资料) LaTeX 参考文献标准选项及其样式共有以下8种: plain,按字母的…

Amazon SageMaker简直就是机器学习平台的天花板

一、前言 最近参与了亚马逊云科技【云上探索实验】活动,通过Amazon SageMaker基于Stable Diffusion模型,非常简单快速搭建的第一个AIGC,一开始以为非常复杂,不懂动手操作,但实际上操作非常简单,没有想象中…

smardaten简直是无代码软件开发的天花板

目录 前言 一、smardaten简单介绍 二、基于smardaten创建应用 1、创建一个炫酷的大屏 2、创建一个web端和移动端共存的应用 三、smardaten功能特性和优势 1、操作简单,快速上手 2、圆桌开发,效率倍升 3、图形编排,拖拽生效 4、低无代…

A股市场全景分析系列—指数已企稳,挖掘板块机会

近期,各大指数逐步企稳,震荡中进入到平台位置。这个时候风险释放差不多了,我们可以用全景分析工具观察下后续哪些板块可以布局。 这轮下跌调整从23年1月30日开始算起至今,板块间的涨跌幅度有很大的差别。 概念板块中,比…

群聊!AI时代,人类的终极欲望到底是什么?从《阿凡达2》找到一个答案!

昨天半夜,我在梦里想通了人类的终极欲望。准确点,应该只是终极欲望之一:长生不老!!! 这个答案,是我看了《阿凡达2》电影后得来的。大家有看吗? 有一个情节,人类捕杀图鲲&…

从业余项目到全世界最受欢迎的编程语言之一,Rust 是如何做到的?

【CSDN 编者按】从日常生活中发现电梯软件的系统崩溃,到将一个业余项目发展成为最受开发者喜爱的编程语言,这是全球开发者Graydon Hoare与Rust的一段奇妙故事。 原文链接:https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-f…

4月24日大模型日报合集(持续更新)

熔岩羊驼LLaVA来了:像GPT-4一样可以看图聊天,无需邀请码,在线可玩 链接:https://news.miracleplus.com/share_link/7263 该模型展示出了一些接近多模态 GPT-4 的图文理解能力:相对于 GPT-4 获得了 85.1% 的相对得分。…

Visual Studio Code 和 GitHub Copilot

翻译自 Chris Dias 的博客 AI 这个话题,近期我们看到它被大家广泛地谈论,有些人很兴奋,也有些人表达了担忧。进步几乎每天都在发生,速度前所未有。每天有超过一百万的 Copilot 用户,如果你有机会尝试,你可…

【人工智能】吴恩达来信:LLMs的美好未来

吴恩达来信:LLMs的美好未来 亲爱的朋友们, 大型语言模型 (LLMs) 的竞争格局正在迅速打开。最终赢家尚未出炉,但目前的形势已经令人兴奋。我想分享一些观察结果,重点关注直接面向消费者的聊天接口以及LLMs基础设施和应用程序层。 首先,ChatGPT是一个新的产品类别。它不仅…

ChatGPT为什么会火,如果我用python写一篇毕业论文可以吗?

ChatGPT由于它采用了先进的自然语言处理技术,能够通过学习大量的语言数据而不断提高自己的语言理解和生成能力,使得它在对话方面表现出色。同时,ChatGPT还可以应用于多个领域,例如智能客服、智能助手、机器翻译等,因此…