爬取虎扑网站上NBA球员数据信息

爬虫案例的一般步骤

1.确定url地址(网页分析)爬虫程序就完成了一半
2.发送网络请求 requests(js\html\css)
3.数据解析(筛选数据)
4.保存数据(本地文件\数据库)

本次爬取目标

爬取虎扑-nba-本赛季的球员所有数据,并将数据保存到csv中。
爬取虎扑网站上NBA球员数据信息_第1张图片

1 .确定url地址(网页分析)

在网页源代码中找到你想要的数据,那这些数据就是静态数据,网页性质就是静态网页。

爬取虎扑网站上NBA球员数据信息_第2张图片

所以url地址就是:https://nba.hupu.com/stats/players/pts/1

2.发送网络请求 requests

爬取虎扑网站上NBA球员数据信息_第3张图片

3.数据解析加保存数据

用网络调试工具加xpath插件看看数据都放在哪
爬取虎扑网站上NBA球员数据信息_第4张图片末页(第三页)的url为https://nba.hupu.com/stats/players/pts/3
所以爬取全部球员只用写个for循环将最后的数字循环一下就行
编写代码
代码如下

f = open('data.csv',mode = 'a',encoding = 'utf-8-sig',newline='')
csv_write = csv.DictWriter(f,fieldnames=['排名','球员','球队','得分','命中-出手',
                             '命中率','命中-三分','三分命中率','命中-罚球','罚球命中率','场次','上场时间'])
csv_write.writeheader( )#写入表头
for page in range(1,4):
    print('===================正在爬取第{}页数据=================='.format(page))
    url = 'https://nba.hupu.com/stats/players/pts/{}'.format(page)
    response = requests.get(url = url)
    html_data = response.text
    selector = parsel.Selector(html_data)
    trs = selector.xpath("//table[@class= 'players_table']/tbody/tr[not(@class='color_font1 bg_a')]")
    for tr in trs:
        rank = tr.xpath('./td[1]/text()').get() # 排名
        player = tr.xpath('./td[2]/a/text()').get() # 球员
        team = tr.xpath('./td[3]/a/text()').get() # 球队
        score = tr.xpath('./td[4]/text()').get() # 得分
        hit_shot = tr.xpath('./td[5]/text()').get() # 命中-出手
        hit_rate = tr.xpath('./td[6]/text()').get() # 命中率
        hit_three = tr.xpath('./td[7]/text()').get() # 命中-三分
        three_rate = tr.xpath('./td[8]/text()').get() # 三分命中率
        hit_penalth = tr.xpath('./td[9]/text()').get() # 命中-罚球
        penalth_rate = tr.xpath('./td[10]/text()').get() # 罚球命中率
        session = tr.xpath('./td[11]/text()').get() # 场次
        playing_time = tr.xpath('./td[12]/text()').get() # 上场时间
        data_dict = {
     '排名':rank,'球员':player,'球队':team,'得分':score,'命中-出手':hit_shot,
                 '命中率':hit_rate,'命中-三分':hit_three,'三分命中率':three_rate,'命中-罚球':hit_penalth,'罚球命中率':penalth_rate,'场次':session,'上场时间':playing_time}
        csv_write.writerow(data_dict)
f.close()

结果如下
爬取虎扑网站上NBA球员数据信息_第5张图片

你可能感兴趣的:(爬虫专题,python,安全,数据挖掘)