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

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

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

在这里插入图片描述

在这里插入图片描述

文章目录

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

⭐️前言

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

有非常好的现实意义!

🌟 了解爬虫

python爬虫

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

然后把响应保存即可。

🌟 准备

python">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)
# 处理结果


# 解析响应数据

# 是否保存

在这里插入图片描述

☀️获取名字

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

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

⭐️完整版

python">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}")
python">编号:排名 姓名:乔尔-恩比德 球队: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

🌟 持久化保存

python">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.niftyadmin.cn/n/252945.html

相关文章

给定一个正整数字符串,使用Python正则表达式在其千分位上添加逗号

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 楼阁玲珑五云起&#xff0c;其中绰约多仙子。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python黄金青铜群【沐】问了一个Python正则表达式的问题…

各种设计模式及其C++实现

设计模式是针对软件设计过程中面临的一般问题&#xff0c;所提出的可重用的解决方案。 其主要优点有&#xff1a; 1、降低系统的复杂性&#xff0c;使系统更加清晰和易于理解。 2、降低系统的维护成本&#xff0c;使系统更容易对变化进行响应。 3、代码重用&#xff0c;避免重复…

Java 7、8 HashMap源码详解与分析

文章目录 一、哈希表的简介二、JDK1.7 HashMap1、构造方法2、添加方法put()方法addEntry()方法 3、存在的问题 三、JDK1.8 HashMap1、红黑树TreeMap2、属性3、存储的结构4、构造方法5、添加方法put(K, V)方法resize扩容方法 5、putAll()方法6、移除方法remove&#xff08;Objec…

Vivado增量编译:加速FPGA设计实现的利器

随着FPGA设计的复杂度不断提高&#xff0c;设计人员需要选择更为高效的设计流程来保证开发效率和减少开发成本。其中&#xff0c;Vivado增量编译是一种非常重要的设计流程。本文将介绍Vivado增量编译的基本概念、优点、使用方法以及注意事项。 通过阅读本文可以了解&#xff1…

苹果手机怎么看生产日期?参考方法在这!

案例&#xff1a;怎么查苹果手机买了几年&#xff1f; 【求助&#xff01;我从别人那里买了一部苹果手机&#xff08;非官方&#xff09;&#xff0c;怎么看这个手机用了几年&#xff1f;】 苹果手机作为一款高端手机&#xff0c;备受用户的喜爱。然而&#xff0c;许多用户不知…

SRS十周年杭州站沙龙技术备忘录

2023年4月22日&#xff0c;SRS流媒体服务器在杭州天堂软件院D幢18楼举办了一场盛大的十周年纪念活动。此次活动旨在回顾SRS的发展历程&#xff0c;分享行业最新技术趋势以及展示SRS未来发展的蓝图。此次活动从下午2点讲到了下午17:30左右&#xff0c;非常有料 本次活动的主讲人…

基于Java+SpringBoot+vue实现图书借阅和销售商城一体化系统

基于JavaSpringBootvue实现图书借阅和销售商城一体化系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方…

npm 备忘清单_开发速查表分享

npm 备忘清单 npm 是 Node.js 的包管理工具&#xff0c;用来安装各种 Node.js 的扩展。 npm 是 JavaScript 的包管理工具&#xff0c;也是世界上最大的软件注册表。有超过 60 万个 JavaScript 代码包可供下载&#xff0c;每周下载约 30 亿次。npm 让 JavaScript 开发人员可以…