关闭

Python爬虫:用BeautifulSoup进行NBA数据爬取

标签: pythonide爬虫调试语言
5488人阅读 评论(6) 收藏 举报

爬虫主要就是要过滤掉网页中无用的信息,抓取网页中有用的信息
一般的爬虫架构为:
这里写图片描述
在python爬虫之前先要对网页的结构知识有一定的了解,如网页的标签,网页的语言等知识,推荐去W3School:
W3school链接进行了解
在进行爬虫之前还要有一些工具:
1.首先Python 的开发环境:这里我选择了python2.7,开发的IDE为了安装调试方便选择了用VS2013上的python插件,在VS上进行开发(python程序的调试与c的调试差不多较为熟悉);
2.网页源代码的查看工具:虽然每一个浏览器都能进行网页源代码的查看,但这里我还是推荐用火狐浏览器和FirBug插件(同时这两个也是网页开发人员必用的工具之一);
FirBug插件的安装可以在右边的添加组件中安装;

其次来看试着看网页的源代码,这里我以我们要爬取的篮球数据为例:
如我要爬取网页中的Team Comparison表格内容为例:
这里写图片描述
先右键选中如我要爬取的比分32-49,点击右键选择选择用firBug查看元素,(FirBug的还有一个好处是在查看源码时会在网页上显示源码所显示的样式,在网页中我的位置及内容)网页下方就会跳出网页的源码以及32-49比分所在的位置及源码如下图:
这里写图片描述
可以看到32-49为网页的源码为:

<td class="sdi-datacell" align="center">32-49</td>

其中td为标签的名字,class为类的名字,align为格式,32-49为标签的内容,为我们要爬取的内容;
但类似的标签以及类的名字在同一个网页中有很多,光靠这两个元素无法爬下我们所需要的数据,这时就需要查看这一标签的父标签,或再上一级的标签来提取更多我们要爬取数据的特征,来过滤其他我们所不要爬取的数据,如我们这里选取这张表格所在的标签作为我我们进行筛选的第二个
特征:

<div class="sdi-so">
<h3>Team Comparison</h3>

再来我们来分析网页的URL:
如我们要爬取的网页的URL为:

http://www.covers.com/pageLoader/pageLoader.aspx?page=/data/nba/matchups/g5_preview_12.html

因为有搭网站的经验,所以可以这里
www.covers.com为域名;
/pageLoader/pageLoader.aspxpage=/data/nba/matchups/g5_preview_12.html,可能为放在服务器上的网页根目录的/pageLoader/pageLoader.aspx?page=/data/nba/matchups/地址中的网页,
为了管理方便,相同类型的网页都会放在同一个文件夹下,以类似的命名方式命名:如这边的网页是以g5_preview_12.html命名的所以类似的网页会改变g5中的5,或者_12 中的12,通过改变这两个数字,我们发现类似网页可以改变12数字来得到,
再来学习爬虫:
这里python爬虫主要用到了
urllib2
BeautifulSoup
这两个库,BeautifulSoup的详细文档可以在以下网站中查看:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
在爬取网页时:
先要打开网页,然后在调用beautifulSoup库进行网页的分析,再用如.find函数找到要刚刚我们分析的特征所在的位置,并用.text来获取标签的内容即我们所要爬取的数据
如我们对照以下代码来进行分析:

  response=urllib2.urlopen(url)
    print response.getcode()
    soup=BeautifulSoup(
                                response,
                                'html.parser',
                                from_encoding='utf-8' 
                                )
    links2=soup.find_all('div',class_="sdi-so",limit=2)
    cishu=0
    for i in links2:
        if(cishu==1):
            two=i.find_all('td',class_="sdi-datacell")
            for q in two:
                print q.text
                table.write(row,col,q.text)
                col=(col+1)%9
                if(col==0):
                    row=row+1
            row=row+1
            file.save('NBA.xls')
        cishu=cishu+1

urllib2.urlopen(url)为打开网页;
print response.getcode()为测试网页是否能被打开;
soup=BeautifulSoup(
response,
‘html.parser’,
from_encoding=’utf-8’
)
为代用Beautiful进行网页的分析;
links2=soup.find_all(‘div’,class_=”sdi-so”,limit=2)为进行特征值的查询与返回
其中我们要查找’div’,class_=”sdi-so”,的标签,limit=2为限制找两个(这是为过滤其他类似的标签)

 for i in links2:
        if(cishu==1):
            two=i.find_all('td',class_="sdi-datacell")
            for q in two:
                print q.text
                table.write(row,col,q.text)
                col=(col+1)%9
                if(col==0):
                    row=row+1
            row=row+1

为在找到的’div’,class_=”sdi-so”,的标签中再进行相应的如’td’,class_=”sdi-datacell”标签的查找;
q.text为返回我们所要的数据
这里 row=row+1,row=row+1为我们将数据写入到excel文件时文件格式的整理所用的;
接下来是对抓取数据的保存:
这里我们用了excel来保存数据用到了包:
xdrlib,sys, xlwt
函数:
file=xlwt.Workbook()
table=file.add_sheet(‘shuju’,cell_overwrite_ok=True)
table.write(0,0,’team’)
table.write(0,1,’W/L’)
table.write(row,col,q.text)
file.save(‘NBA.xls’)
为最基本的excel写函数,这里不再累述;
最后我们爬下来数据保存格式后样式为:
这里写图片描述
NICE
这里写图片描述

我所认为最深沉的爱,莫过于分开以后,我将自己,活成了你的样子。

4
0
查看评论

利用bs4和requests爬取股票历史交易数据

最近在学习优达学院的一门机器学习的课程,主要讲解利用机器学习分析股票数据,然后。课程网址在这里:https://classroom.udacity.com/courses/ud501 所以需要大量的股票数据,我就先百度了一下,发现网易财经的数据很全,暴露的也很好,所以的数据都是放在一个标签中, ...
  • qq_25936689
  • qq_25936689
  • 2016-11-18 15:56
  • 3054

用 requests 和 bs4 爬取京东商品页面信息

1、网页地址在京东主页搜索框输入 电脑得到的地址为https://search.jd.com/Search?keyword=%E7%94%B5%E8%84%91&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&offset=5&am...
  • qq_21046135
  • qq_21046135
  • 2017-05-04 13:06
  • 1595

Python爬虫爬取NBA数据

爬取的网站为:stat-nba.com,本文爬取的是NBA2016-2017赛季常规赛至2017年1月7日的数据 改变url_header和url_tail即可爬取特定的其他数据。 源代码如下: #coding=utf-8 import sys reload(sys) sys.setdefaulte...
  • roytao2
  • roytao2
  • 2017-01-07 23:17
  • 1526

python : BeautifulSoup 网页 table 解析范例

python BeautifulSoup 网页 table 解析范例
  • belldeep
  • belldeep
  • 2016-02-08 18:47
  • 8351

Python爬虫---提取数据(2)--beautifulsoup

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间. 文档地址:http://beautifulsoup.readthedocs....
  • lw_zhaoritian
  • lw_zhaoritian
  • 2016-07-12 16:38
  • 6024

[python3]nba球员数据爬虫

新浪nba球员数据库爬虫
  • a472770699
  • a472770699
  • 2017-04-07 22:12
  • 453

python爬虫+数据分析之NBA球员LBJ13个赛季的数据分析

python爬虫最近在看数据分析的书籍,想着自己分析一点东西来,本人比较喜欢NBA,自然就先拿NBA作为分析的对象了,首先要获得最全的NBA数据,根据搜索的结果对比发现,stat-nba.com该网站的数据非常全面详细,真是业界良心。 数据源找到后第一件事情自然就是获取数据,这里用python的原...
  • u010309756
  • u010309756
  • 2016-12-29 17:45
  • 1421

Python3 爬虫(八) -- BeautifulSoup之再次爬取CSDN博文

序 我的Python3爬虫(五)博文使用utllib基本函数以及正则表达式技术实现了爬取csdn全部博文信息的任务。 链接:Python3 爬虫(五) -- 单线程爬取我的CSDN全部博文 上一篇,我们学习了BeautifulSoup这样一个优秀的Python库,必须有效利用起来。那么我们就利...
  • fly_yr
  • fly_yr
  • 2016-06-01 17:48
  • 11020

python爬取各类文档方法归类小结

HTML文档是互联网上的主要文档类型,但还存在如TXT、WORD、Excel、PDF、csv等多种类型的文档。网络爬虫不仅需要能够抓取HTML中的敏感信息,也需要有抓取其他类型文档的能力。下面简要记录一些个人遇到的抓取方法,以备查阅。 抓取TXT文档 在python3下,常用方法是使用urll...
  • hhhparty
  • hhhparty
  • 2017-02-08 12:09
  • 2610

Selenium学习三——利用Python爬取网页表格数据并存到excel

利用Python爬取网页表格数据并存到excel 1、具体要求: 读取教务系统上自己的成绩单,并保存到本地的excel中 2、技术要求: 利用Selenium+Python获取网页,自动登陆并操作到成绩单页面 通过xlwt模块,将表格保存到本地excel (其中xlwt模块通过cmd打开命令...
  • yxStory
  • yxStory
  • 2017-09-25 15:10
  • 2557
    个人资料
    • 访问:85514次
    • 积分:1406
    • 等级:
    • 排名:千里之外
    • 原创:52篇
    • 转载:0篇
    • 译文:1篇
    • 评论:66条
    最新评论
    云音乐
      云音乐