python爬虫实战——NBA球员基本数据

入门级爬虫

本实战使用python 3.6版本
首先找到目标网站 新浪的NBA数据库
这里写图片描述

然后点开奇才就出现奇才所以球员的基本信息:

这里写图片描述
我的想法是先在第一个页面获得所以球队的url,再根据球队获得所以球员的基本信息
有思路就立马动手于是在浏览器中默默的按了F12,开始调试,右键奇才
这里写图片描述
发现url的规律”team.php?id=×× “并多打开了几个其他队的发现也是这样的
找到规律于是立马动手代码如下:

from urllib.request import urlopen,Request
from bs4 import BeautifulSoup
from urllib.error import HTTPError #处理请求异常的库
def get_url(url):
    #模拟浏览器设置头数据
    head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063","Connection":"keep-alive"}
    #异常处理
    try:
        response=Request(url,headers=head)
    except HTTPError as error:
        print(error)
    else:
        url_downed=urlopen(response)
        html=BeautifulSoup(url_downed)
        html_teams=html.select("a[href*='team.php?id=']")
        #定义字典储存队名和url
        urlteam={}
        for team in html_teams:
            #get_text()的得到队名 attrs得到url
            urlteam[team.get_text()]=team.attrs["href"]
        return urlteam

得到队名和url的字典urlteam
接下来就要爬球员基本数据了,同样的去网页找规律
发现刚好要爬的数据是第一个table
这里写图片描述
但是我又不希望把“号码,球员,位置”那一行爬下来于是找到不同
这里写图片描述
这行 缺少onmouseover属性于是:

urlteam=get_url('http://nba.sports.sina.com.cn/players.php')
i=1#用于计数
for key in urlteam:
    value=urlteam[key]
    try:
        head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063","Connection":"keep-alive"}
        response=Request("http://nba.sports.sina.com.cn/"+value,headers=head)
        res=urlopen(response)
    except HTTPError as er:
        print(er)
    else:
        print(i)#打印次数
        resp=BeautifulSoup(res)
        htmls=resp.find('table',{'width':'702'}).select("tr[onmouseover]")
        f=open(r'C:\Users\lingxian\Documents\date.txt','a',encoding='utf-8')
        f.write('____________'+key+'________________'+'\n')
        for html in htmls:
            f.write(html.get_text())
        i=i+1
        f.write('\n')
        f.close()

结果如下:
这里写图片描述

第一次写博客

问题多请各位斧正

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值