爬取nba中国官网灰熊队球员信息

本文介绍了一个Python脚本,使用BeautifulSoup和正则表达式从NBA球员页面抓取信息,如姓名、位置等,并将数据保存到Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这段代码是一个Python网络爬虫,用于从指定的NBA球员页面抓取球员信息,并将这些信息保存到Excel文件中。以下是对代码各部分的详细介绍:

PythonAI 生成的代码。仔细查看和使用。 有关常见问题解答的详细信息.

# -*- coding = utf-8 -*-
from bs4 import BeautifulSoup  # 网页解析,获取数据
import re  # 正则表达式,进行文字匹配
import urllib.request, urllib.error  # 制定URL,获取网页数据
import xlwt  # 进行excel操作

首先,我们导入了一些必要的Python库,包括BeautifulSoup(用于解析HTML),re(用于使用正则表达式进行文本匹配),urllib(用于获取网页数据),以及xlwt(用于操作Excel文件)。

PythonAI 生成的代码。仔细查看和使用。 有关常见问题解答的详细信息.

# 创建正则表达式对象,标识规则
findName = re.compile(r'<div class="name">(.*?)</div>')
findPosition = re.compile(r'<div class="position">(.*?)</div>')
findHeight = re.compile(r'<div class="height">(.*?)</div>')
findWeight = re.compile(r'<div class="weight">(.*?)</div>')
findNumber = re.compile(r'<div class="number">(.*?)</div>')
findBirthday = re.compile(r'<div class="birthday">(.*?)</div>')
findExperience = re.compile(r'<div class="experience">(.*?)</div>')
findPreNBA = re.compile(r'<div class="pre-nba">(.*?)</div>')
findNationality = re.compile(r'<div class="nationality">(.*?)</div>')

接下来,我们定义了一些正则表达式,用于从HTML中提取我们感兴趣的信息,如球员的姓名、位置、身高、体重、球号、生日、经验、进入NBA之前的情况以及国籍。

PythonAI 生成的代码。仔细查看和使用。 有关常见问题解答的详细信息.

def main():
    baseurl = "https://china.nba.cn/teams/roster/#!/grizzlies"  # 要爬取的网页链接
    datalist = getData(baseurl)
    savepath = "NBA_players.xls"  # 当前目录新建XLS,存储进去
    saveData(datalist, savepath)

main()函数中,我们定义了要爬取的网页链接,然后调用getData()函数来获取数据,并将这些数据保存到Excel文件中。

PythonAI 生成的代码。仔细查看和使用。 有关常见问题解答的详细信息.

# 爬取网页
def getData(baseurl):
    datalist = []  # 用来存储爬取的网页信息
    html = askURL(baseurl)  # 保存获取到的网页源码
    soup = BeautifulSoup(html, "html.parser")
    for item in soup.find_all('div', class_="player"):  # 查找符合要求的字符串
        data = []  # 保存一部电影所有信息
        item = str(item)
        name = re.findall(findName, item)[0]
        data.append(name)
        position = re.findall(findPosition, item)[0]
        data.append(position)
        height = re.findall(findHeight, item)[0]
        data.append(height)
        weight = re.findall(findWeight, item)[0]
        data.append(weight)
        number = re.findall(findNumber, item)[0]
        data.append(number)
        birthday = re.findall(findBirthday, item)[0]
        data.append(birthday)
        experience = re.findall(findExperience, item)[0]
        data.append(experience)
        pre_nba = re.findall(findPreNBA, item)[0]
        data.append(pre_nba)
        nationality = re.findall(findNationality, item)[0]
        data.append(nationality)
        datalist.append(data)
    return datalist

getData()函数中,我们首先打开网页并获取其HTML源码,然后使用BeautifulSoup来解析这个HTML。我们查找所有的div元素,其类名为player,然后对于每一个这样的元素,我们使用之前定义的正则表达式来提取我们感兴趣的信息,并将这些信息添加到数据列表中。

PythonAI 生成的代码。仔细查看和使用。 有关常见问题解答的详细信息.

# 得到指定一个URL的网页内容
def askURL(url):
    head = {  # 模拟浏览器头部信息,向豆瓣服务器发送消息
        "User-Agent": "Mozilla / 5.0(Windows NT 10.0; Win64; x64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 80.0.3987.122  Safari / 537.36"
    }
    request = urllib.request.Request(url, headers=head)
    html = ""
    try:
        response = urllib.request.urlopen(request)
        html = response.read().decode("utf-8")
    except urllib.error.URLError as e:
        if hasattr(e, "code"):
            print(e.code)
        if hasattr(e, "reason"):
            print(e.reason)
    return html

askURL()函数用于获取指定URL的网页内容。我们创建了一个请求,并在请求的头部信息中设置了用户代理,这样我们就可以模拟浏览器向服务器发送请求。然后我们尝试打开这个URL并读取其内容。如果在这个过程中发生任何错误,我们会打印出错误的代码和原因。

PythonAI 生成的代码。仔细查看和使用。 有关常见问题解答的详细信息.

# 保存数据到表格
def saveData(datalist, savepath):
    book = xlwt.Workbook(encoding="utf-8", style_compression=0)  # 创建workbook对象
    sheet = book.add_sheet('NBA Players', cell_overwrite_ok=True)  # 创建工作表
    col = ("姓名", "位置", "身高", "体重", "球号", "生日", "经验", "进入NBA之前", "国籍")
    for i in range(0, 9):
        sheet.write(0, i, col[i])  # 列名
    for i in range(0, len(datalist)):
        data = datalist[i]
        for j in range(0, 9):
            sheet.write(i + 1, j, data[j])  # 数据
    book.save(savepath)  # 保存

最后,saveData()函数将获取的数据保存到Excel文件中。我们创建了一个新的工作簿和工作表,然后将数据写入到这个工作表中。每一行代表一个球员,每一列代表一个属性(如姓名、位置等)。最后,我们保存这个工作簿到指定的路径。

PythonAI 生成的代码。仔细查看和使用。 有关常见问题解答的详细信息.

if __name__ == '__main__':
    main()

这是Python程序的常见结构,当我们直接运行这个文件时,__name__变量的值为__main__,所以main()函数会被调用。如果我们从另一个文件导入这个文件,__name__变量的值为这个文件的名字,所以main()函数不会被调用。

总的来说,这段代码是一个完整的Python网络爬虫程序,它展示了如何使用BeautifulSoup库和正则表达式来抓取网页信息,以及如何使用xlwt库将数据保存到Excel文件中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值