python从入门到入狱系列-帮你彻底搞懂python的项目实战,爬虫获取NBA成员信息

news2024/11/23 11:43:55
  • 作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。
  • 荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。
  • 跨领域学习,喜欢摄影、弹吉他、咏春拳。文章深入浅出、语言风趣;爱吃必胜客社区创立者,旨在“发现美 欣赏美

  • 🏆 学习系列专栏
    。🏅 Python学习宝库
    。🏅 网络安全学习宝库

在这里插入图片描述

在这里插入图片描述

文章目录

  • ⭐️前言
    • 🌟 了解爬虫
    • 🌟 准备
      • ☀️获取名字
  • ⭐️完整版
    • 🌟 持久化保存
    • zip函数-打包为元组的列表

⭐️前言

python爬虫爬取网络的信息,非常好用,我们要学会,拿来下载自己喜欢的图,放到服务器使劲爬,不用自己复制粘贴。

有非常好的现实意义!

🌟 了解爬虫

python爬虫

就是B/S结构,我们直接用python装成浏览器去访问server就ok!

然后把响应保存即可。

🌟 准备

import requests

# 发送请求

url="https://nba.hupu.com/stats/players"
headers={'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48"}
resp=requests.get(url=url,headers=headers)
print(resp.text)
# 处理结果


# 解析响应数据

# 是否保存

在这里插入图片描述

☀️获取名字

import requests
from lxml import etree
# 发送请求

url="https://nba.hupu.com/stats/players"
headers={'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48"}
resp=requests.get(url=url,headers=headers)

# 处理结果
e=etree.HTML(resp.text)
# 解析响应数据
names=e.xpath('//table[@class="players_table"]//tr/td[2]/a/text()')

# 是否保存
print(names)
['乔尔-恩比德', '卢卡-东契奇', '达米安-利拉德', '谢伊-吉尔杰斯-亚历山大', '扬尼斯-阿德托昆博', '杰森-塔特姆', '多诺万-米切尔', '杰伦-布朗', '贾-莫兰特', '特雷-杨', '劳里-马尔卡宁', '朱利叶斯-兰德尔', '达龙-福克斯', '扎克-拉文', '安东尼-爱德华兹', '德马尔-德罗赞', '尼古拉-约基奇', '帕斯卡尔-西亚卡姆', '杰伦-布伦森', '克里斯塔普斯-波尔津吉斯', '吉米-巴特勒', '杰伦-格林', '凯尔登-约翰逊', '克莱-汤普森', '达里厄斯-加兰', '博扬-波格丹诺维奇', '德斯蒙德-贝恩', '凯尔-库兹马', '安芬尼-西蒙斯', '特里-罗齐尔', '詹姆斯-哈登', 'CJ-麦科勒姆', '乔丹-克拉克森', '杰拉米-格兰特', '德章泰-默里', '巴姆-阿德巴约', '乔丹-普尔', '泰雷斯-马克西', '泰勒-希罗', '保罗-班切罗', '贾马尔-默里', 'RJ-巴雷特', '弗雷德-范弗利特', '朱-霍勒迪', '小凯文-波特', '多曼塔斯-萨博尼斯', '小贾伦-杰克逊', '弗朗茨-瓦格纳', '迈尔斯-特纳', '德安德烈-艾顿']

['76人', '独行侠', '开拓者', '雷霆', '雄鹿', '凯尔特人', '骑士', '凯尔特人', '灰熊', '老鹰', '爵士', '尼克斯', '国王', '公牛', '森林狼', '公牛', '掘金', '猛龙', '尼克斯', '奇才', '热火', '火箭', '马刺', '勇士', '骑士', '活塞', '灰熊', '奇才', '开拓者', '黄蜂', '76人', '鹈鹕', '爵士', '开拓者', '老鹰', '热火', '勇士', '76人', '热火', '魔术', '掘金', '尼克斯', '猛龙', '雄鹿', '火箭', '国王', '灰熊', '魔术', '步行者', '太阳']

⭐️完整版

import requests
from lxml import etree
# 发送请求

url="https://nba.hupu.com/stats/players"
headers={'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48"}
resp=requests.get(url=url,headers=headers)

# 处理结果
e=etree.HTML(resp.text)
# 解析响应数据
nos=e.xpath('//table[@class="players_table"]//tr/td[1]/text()')
names=e.xpath('//table[@class="players_table"]//tr/td[2]/a/text()')
teams=e.xpath('//table[@class="players_table"]//tr/td[3]/a/text()')
scores=e.xpath('//table[@class="players_table"]//tr/td[4]/text()')


# 是否保存
for i,j,k,l in zip(nos,names,teams,scores):
    print(f"编号:{i} 姓名:{j} 球队:{k} 得分:{l}")
编号:排名 姓名:乔尔-恩比德 球队:76人 得分:得分
编号:1 姓名:卢卡-东契奇 球队:独行侠 得分:33.10
编号:2 姓名:达米安-利拉德 球队:开拓者 得分:32.40
编号:3 姓名:谢伊-吉尔杰斯-亚历山大 球队:雷霆 得分:32.20
编号:4 姓名:扬尼斯-阿德托昆博 球队:雄鹿 得分:31.40
编号:5 姓名:杰森-塔特姆 球队:凯尔特人 得分:31.10
编号:6 姓名:多诺万-米切尔 球队:骑士 得分:30.10
编号:7 姓名:杰伦-布朗 球队:凯尔特人 得分:28.30
编号:8 姓名:贾-莫兰特 球队:灰熊 得分:26.60
编号:9 姓名:特雷-杨 球队:老鹰 得分:26.20
编号:9 姓名:劳里-马尔卡宁 球队:爵士 得分:26.20
编号:11 姓名:朱利叶斯-兰德尔 球队:尼克斯 得分:25.60
编号:12 姓名:达龙-福克斯 球队:国王 得分:25.10
编号:13 姓名:扎克-拉文 球队:公牛 得分:25.00
编号:14 姓名:安东尼-爱德华兹 球队:森林狼 得分:24.80
编号:15 姓名:德马尔-德罗赞 球队:公牛 得分:24.60
编号:16 姓名:尼古拉-约基奇 球队:掘金 得分:24.50
编号:16 姓名:帕斯卡尔-西亚卡姆 球队:猛龙 得分:24.50
编号:18 姓名:杰伦-布伦森 球队:尼克斯 得分:24.20
编号:19 姓名:克里斯塔普斯-波尔津吉斯 球队:奇才 得分:24.00
编号:20 姓名:吉米-巴特勒 球队:热火 得分:23.20
编号:21 姓名:杰伦-格林 球队:火箭 得分:22.90
编号:22 姓名:凯尔登-约翰逊 球队:马刺 得分:22.10
编号:23 姓名:克莱-汤普森 球队:勇士 得分:22.00
编号:24 姓名:达里厄斯-加兰 球队:骑士 得分:21.90
编号:25 姓名:博扬-波格丹诺维奇 球队:活塞 得分:21.60
编号:25 姓名:德斯蒙德-贝恩 球队:灰熊 得分:21.60
编号:27 姓名:凯尔-库兹马 球队:奇才 得分:21.50
编号:28 姓名:安芬尼-西蒙斯 球队:开拓者 得分:21.20
编号:29 姓名:特里-罗齐尔 球队:黄蜂 得分:21.10
编号:29 姓名:詹姆斯-哈登 球队:76人 得分:21.10
编号:31 姓名:CJ-麦科勒姆 球队:鹈鹕 得分:21.00
编号:32 姓名:乔丹-克拉克森 球队:爵士 得分:20.90
编号:33 姓名:杰拉米-格兰特 球队:开拓者 得分:20.80
编号:34 姓名:德章泰-默里 球队:老鹰 得分:20.50
编号:34 姓名:巴姆-阿德巴约 球队:热火 得分:20.50
编号:36 姓名:乔丹-普尔 球队:勇士 得分:20.40
编号:36 姓名:泰雷斯-马克西 球队:76人 得分:20.40
编号:38 姓名:泰勒-希罗 球队:热火 得分:20.30
编号:39 姓名:保罗-班切罗 球队:魔术 得分:20.10
编号:40 姓名:贾马尔-默里 球队:掘金 得分:20.00
编号:40 姓名:RJ-巴雷特 球队:尼克斯 得分:20.00
编号:42 姓名:弗雷德-范弗利特 球队:猛龙 得分:19.60
编号:43 姓名:朱-霍勒迪 球队:雄鹿 得分:19.30
编号:43 姓名:小凯文-波特 球队:火箭 得分:19.30
编号:45 姓名:多曼塔斯-萨博尼斯 球队:国王 得分:19.20
编号:46 姓名:小贾伦-杰克逊 球队:灰熊 得分:19.10
编号:47 姓名:弗朗茨-瓦格纳 球队:魔术 得分:18.60
编号:47 姓名:迈尔斯-特纳 球队:步行者 得分:18.60
编号:49 姓名:德安德烈-艾顿 球队:太阳 得分:18.00

进程已结束,退出代码0

🌟 持久化保存

import requests
from lxml import etree
# 发送请求

url="https://nba.hupu.com/stats/players"
headers={'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48"}
resp=requests.get(url=url,headers=headers)

# 处理结果
e=etree.HTML(resp.text)
# 解析响应数据
nos=e.xpath('//table[@class="players_table"]//tr/td[1]/text()')
names=e.xpath('//table[@class="players_table"]//tr/td[2]/a/text()')
teams=e.xpath('//table[@class="players_table"]//tr/td[3]/a/text()')
scores=e.xpath('//table[@class="players_table"]//tr/td[4]/text()')


# 是否保存
with open("nba.txt","w",encoding="utf-8") as f:
    for i,j,k,l in zip(nos,names,teams,scores):
        f.write(f"编号:{i} 姓名:{j} 球队:{k} 得分:{l}\n")

zip函数-打包为元组的列表

zip([iterable, …])
参数说明:

iterable – 一个或多个迭代器;

返回元组列表。

实例
以下两个实例分别展示了 Python2.x 与 Python3.x zip 的使用方法:

实例(Python 2.0+)

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
实例(Python 3.0+)
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 返回一个对象
zipped
<zip object at 0x103abc288>
list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]

a1, a2 = zip(zip(a,b)) # 与 zip 相反,zip() 可理解为解压,返回二维矩阵式
list(a1)
[1, 2, 3]
list(a2)
[4, 5, 6]
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

020 - C++ 枚举

今天我们要讲的是 C 中的枚举。 enum 是 enumeration 的缩写&#xff0c;基本上可以说&#xff0c;它就是一个数值集合。如果你想要给枚举一个更实际的定义&#xff0c;它们是给一个值命名的一种方法。 所以我们不用一堆叫做 A、B、C 的整数。我们可以有一个枚举数。它的值是…

Flask 与 Django 先学哪个呢

本文把 Flask 和 Django 做一个比对&#xff0c;因为我对这两个 Python Web 框架都有实际的开发经验。希望我可以帮助您选择学习哪个框架&#xff0c;因为学习一个框架可能会非常耗时 —— 当然也很有趣&#xff01; 相似之处 让我们从相似之处开始。 No. 1 Flask 和 Djang…

ROS学习第二十七节——URDF集成Rviz基本流程

前面介绍过&#xff0c;URDF 不能单独使用&#xff0c;需要结合 Rviz 或 Gazebo&#xff0c;URDF 只是一个文件&#xff0c;需要在 Rviz 或 Gazebo 中渲染成图形化的机器人模型&#xff0c;当前&#xff0c;首先演示URDF与Rviz的集成使用&#xff0c;因为URDF与Rviz的集成较之于…

ROS学习第二十八节——URDF之robot link

1.概述 URDF 文件是一个标准的 XML 文件&#xff0c;在 ROS 中预定义了一系列的标签用于描述机器人模型&#xff0c;机器人模型可能较为复杂&#xff0c;但是 ROS 的 URDF 中机器人的组成却是较为简单&#xff0c;可以主要简化为两部分:连杆(link标签) 与 关节(joint标签)&…

数据库基础篇 《11.数据处理之增删改》

1. 插入数据 1.1 实际问题 解决方式&#xff1a;使用 INSERT 语句向表中插入数据。 1.2 方式1&#xff1a;VALUES的方式添加 使用这种语法一次只能向表中插入一条数据。 情况1&#xff1a;为表的所有字段按默认顺序插入数据 INSERT INTO 表名 VALUES (value1,value2,....);…

03.初始React脚手架

一.使用create-react-app创建react应用 1.react脚手架 xxx脚手架&#xff1a;用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需要的配置&#xff08;语法检查&#xff0c;jsx编译&#xff0c;devServer…&#xff09;下载好了所有相关的依赖可以直接运行一个简单…

硬件还不够!激光雷达「开卷」感知算法+数据闭环

激光雷达正式进入量产周期&#xff0c;而如何用好激光雷达&#xff0c;并形成更优更具性价比的激光雷达系统方案&#xff0c;助力激光雷达量产上车并真正用好激光雷达系统&#xff0c;将是接下来两年激光雷达赛道的主要方向。 在近期开幕的上海国际车展上&#xff0c;亮道智能…

学系统集成项目管理工程师(中项)系列10_立项管理

1. 系统集成项目管理至关重要的一个环节 2. 重点在于是否要启动一个项目&#xff0c;并为其提供相应的预算支持 3. 项目建议 3.1. Request for Proposal, RFP 3.2. 立项申请 3.3. 项目建设单位向上级主管部门提交的项目申请文件&#xff0c;是对拟建项目提出的总体设想 3…

延迟渲染 Deferred Rendering

前向渲染 先计算光照再裁剪。 前向渲染是现在最基础&#xff0c;也是最多引擎使用的标准。前向渲染的流程是给定一个几何体&#xff0c;引擎对其进行从顶点到像素着色器的一系列计算&#xff0c;然后输出到最终的图像缓冲区。场景中有多个几何体时&#xff0c;引擎就是对其挨个…

薪资18K需要什么水平?来看看98年测试工程师的面试全过程…

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;本科&#xff0c;三年多测试工作经验&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;然而到今天都没有收到一份offer&#xff01;从年后就开始准备简历&#xff0c;年…

西交大-一百本书-解决不能粘贴的限制

快毕业了&#xff0c;要填四个一百&#xff0c;其他三个都几分钟就填完了。只有读一百本书要写读书笔记且不能粘贴&#xff0c;防谁呢真是的。发现一种解决不能粘贴限制的方法。顺道附上利用ChatGpt快速生成书评的方法。 四个一百网址 一、 解除粘贴限制 以edge浏览器为例 登…

Python|勘测定界TXT坐标点转shp文件——Arcpy实现

平时日常工作中,经常会遇到txt格式的测绘数据,这类数据通常只有不同地块的界址点集和坐标系信息,没法直接导入GIS软件中进行分析。拿到这类原始文本文件,首要工作就是将之转换为shp图层数据。 今天,主要分享两种转shp数据的方法,一种是在arcmap中直接转换,另一种是通过…

springboot+RateLimiter+AOP自定义注解限流

springbootRateLimiterAOP自定义注解限流 RateLimiter简介springboot集成RateLimiterpom.xml引入RateLimiter常用api代码实现自定义注解Limiter限流切面验证 RateLimiter简介 RateLimiter是Guava库中的一个限流器&#xff0c;它提供如下功能&#xff1a; (1)基于PPS进行限流 (…

论文推荐:基于联合损失函数的多任务肿瘤分割

以FFANet为主干&#xff0c;加入分类的分支&#xff0c;将模型扩展为多任务图像分割框架&#xff0c;设计了用于分类和分割的联合损失函数。 FFANetMTL 1、FFANet和分割分支 FFANet作为骨干网络&#xff0c;作为对VoVNet的重新设计和优化&#xff0c;FFANet在骨干网中加入了残…

SpringMVC请求与响应

文章目录 请求与响应请求映射路径请求传参传递普通参数传递实体类参数传递数组参数传递集合参数传递JSON参数传递日期参数 响应数据 请求与响应 请求映射路径 请求映射路径是通过注解: RequestMapping 类型&#xff1a;方法注解, 类注解 位置&#xff1a;SpringMVC控制器方法…

少儿编程 中国电子学会图形化编程等级考试Scratch编程一级真题解析(判断题)2023年3月

2023年3月scratch编程等级考试一级真题 判断题(共10题,每题2分,共20分) 26、在角色列表区和造型标签页都可以修改角色的名称。 答案:错 考点分析:考查Scratch平台使用,只有角色区可以修改角色的造型名称,造型标签不能修改,所以答案错误 27、可以在角色中切换舞台的…

Java核心技术 卷1-总结-7

Java核心技术 卷1-总结-7 lambda 表达式方法引用构造器引用变量作用域异常分类声明受查异常 lambda 表达式 方法引用 有时&#xff0c; 可能已经有现成的方法可以完成你想要传递到其他代码的某个动作。例如&#xff0c; 假设你希望只要出现一个定时器事件就打印这个事件对象。…

使用@Scope注解设置组件的作用域

前言 Spring容器中的组件默认是单例的&#xff0c;在Spring启动时就会实例化并初始化这些对象&#xff0c;并将其放到Spring容器中&#xff0c;之后&#xff0c;每次获取对象时&#xff0c;直接从Spring容器中获取&#xff0c;而不再创建对象。 1.Scope注解概述 Scope注解能…

【uni-app】【01】底部导航栏与页面切换

1.(配置文件在哪)uni-app 路由控制是在 pages.json文件中的。 2.(基本配置项有哪些)初学的时候主要有三个配置项&#xff0c;①pages ② globalStyle ③ tabbar [!TOC] 接下来主要是对这三个配置项做一个简单介绍。 pages 负责页面管理。不需要自己写的&#xff0c;你在项目的p…

【Scala入门】scala基础语法:类和对象,变量和常量

上一篇请移步【Scala入门】Scala下载及安装&#xff08;Windows&#xff09;以及Idea创建第一个scala项目_水w的博客-CSDN博客 目录 一、Scala 二、Scala基础语法 2.1 注释与标识符规范 2.2 变量与常量 【案例&#xff1a;变量声明和赋值】 2.3 object 【案例&#xff1…