爬虫程序设计

爬取步骤

  1. 获取网页响应 网页地址为(NBA赛程表|NBA总决赛赛程表|最全的2021-2022NBA赛程表—虎扑NBA

  2. 解析网页

  3. 存储数据

爬取方法

  1. 通过requests库来请求网页

  2. 解析网页通过lxml库中的etree方法

  3. 存储数据到csv文件中


代码实现

import csv
import requests
from lxml import etree
​
​
class nba(object):
    """创建封装类"""
​
    def __init__(self):
        # 初始化类
​
        # 获取要爬取的球队名
        self.team_name = input("请输入想要获取的球队 :")
        # 获取要爬取的url地址
        self.url = self.get_url(self.team_name)
        # 获取内容
        self.content = self.get_content(self.url)
        # 将获取到的内容写入到文件中
        self.write_file(self.content,self.team_name)
        # print(self.content)
​
    def get_url(self, team_name):
        """定义获取url地址函数
            url地址为’https://nba.hupu.com/schedule/‘+球队名
        """
        # 拼接url地址
        url = 'https://nba.hupu.com/schedule/' + team_name
        return url
​
    def get_content(self,url):
        """定义获取内容函数"""
        # 将爬虫代码伪装成浏览器
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x6S4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.46'}
        # 获取网页响应
        response = requests.get(url=url, headers=headers).text
        # 解析网页内容
        res = etree.HTML(response)
        content = res.xpath('/html/body/div[3]/div[4]/table/tbody/tr[@class="left"]')
        a = [ ]
        # 遍历比赛总场数|获取每场比赛状况
        for tr in content:
            # 获取主客场球队名
            name = tr.xpath('./td/a/text()')
            name.pop(-1)
            # 获取比分
            score = tr.xpath('./td[2]/text()')[ 0 ].replace('\n', '')
            score = score.replace('\xa0', '')
            # 获取比赛结果
            result = tr.xpath('./td[3]/text()')[ 0 ].replace('\n', '')
            # 将每场比赛的主客场球队名|比分以及比赛结果加入进一个列表
            name.append(score)
            name.append(result)
            # 将每场比赛状况加入进一个大列表|方便之后写入csv文件
            a.append(name)
        return a
​
    def write_file(self, content,team_name):
        """将数据写入csv文件"""
        with open('./%s.csv' % team_name, 'w', newline='', encoding='utf-8') as csvfile:
            writer = csv.writer(csvfile)
            # 写入列名
            writer.writerow([ '主场', '客场', '比分', '结果' ])
            # 写入多行数据
            writer.writerows([ day_detail for day_detail in content ])
​
​
if __name__ == '__main__':
    a = nba()

数据存储

数据存储到csv文件中去

主场客场比分结果
篮网湖人123-97
湖人太阳105-117
湖人勇士114-121
太阳湖人123-94

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值