爬虫主要就是要过滤掉网页中没用的信息。抓取网页中实用的信息
一般的爬虫架构为:

在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=0for i in links2:if(cishu==1):two=i.find_all('td',class_="sdi-datacell")for q in two:print q.texttable.write(row,col,q.text)col=(col+1)%9if(col==0):row=row+1row=row+1file.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.texttable.write(row,col,q.text)col=(col+1)%9if(col==0):row=row+1row=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

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

转载于:https://www.cnblogs.com/zsychanpin/p/7402839.html

Python爬虫:用BeautifulSoup进行NBA数据爬取相关推荐

  1. Python爬虫《自动化学报》数据爬取与数据分析

    Python爬虫<自动化学报>数据爬取与数据分析 文章目录 Python爬虫<自动化学报>数据爬取与数据分析 前言 一.代码 二.结果展示 三.爬虫实现 1.准备 2.获取网页 ...

  2. (python爬虫)新浪新闻数据爬取与清洗+新浪新闻数据管理系统+MySQL

    新浪新闻数据爬取与清洗+新浪新闻数据管理系统 设计要求 新浪新闻数据爬取与清洗 基本要求:完成新浪新闻排行中文章的数据爬取,包括标题.媒体.时间.内容. 进阶要求:对最近一周出现次数最多的关键字排名并 ...

  3. python爬虫,g-mark网站图片数据爬取及补坑

    应用python对g-mark网站图片数据爬取,同时但对于数据抓取失败的图片进行补坑(重新爬取操作),由于是日本网站,没有梯子访问的话,特别容易访问超时,比较合适的补坑操作是直接将数据采集到数据库,而 ...

  4. Python爬虫-CSDN博客排行榜数据爬取

    文章目录 前言 网络爬虫 搜索引擎 爬虫应用 谨防违法 爬虫实战 网页分析 编写代码 运行效果 反爬技术 前言 开始接触 CTF 网络安全比赛发现不会写 Python 脚本的话简直寸步难行--故丢弃 ...

  5. Python爬虫实习笔记 | Week4 项目数据爬取与反思

    2018/11/05 1.所思所想: 今天我把Python爬虫实战这本书Chapter6看完,很有感触的一点是,书本中对爬虫实现的模块化设计很给我灵感,让我对项目中比较无语的函数拼接有了解决之道,内省 ...

  6. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...

    原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方 ...

  7. python爬取app播放的视频,Python爬虫工程师必学——App数据抓取实战视频教程

    爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统数据抓取.本课程主要为同学讲解如何用python实现App数据抓取,课程从开发环境搭建,App爬虫必备利器详解,项目实战,到最后的多App ...

  8. python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...

    Python爬虫入门实战--------一周天气预报爬取[转载][没有分析 Python爬虫入门实战--------一周天气预报爬取[转载][没有分析] 来源:https://blog.csdn.ne ...

  9. 基于python爬虫————静态页面和动态页面爬取

    基于python爬虫----静态页面和动态页面爬取 文章目录 基于python爬虫----静态页面和动态页面爬取 1. 爬虫的原理 2. 用正则表达式匹配获取数据 3. 页面源码解析 4. 通过req ...

最新文章

  1. Cs Round#56 D Find Path Union
  2. 对 C++ 历史的个人观点
  3. linux 查看flash大小,Linux OpenWRT查看CPU,RAM,Flash信息参数
  4. 为什么说去中心化很重要
  5. 了解SQL Server数据库静态数据及其如何适合数据库生命周期管理
  6. field list什么意思_什么是生物信息学?
  7. 医用口罩、N95、KN95口罩的区别
  8. 7-3 复数四则运算 (15 分)
  9. 编程之美——题目2 : 回文字符序列
  10. atitit 项目团队管理之道.docx
  11. 招标采购专业实务课程大纲--刘小明老师
  12. 基于vue的html编辑器,基于vue富文本编辑器的慢慢人生路
  13. 快速安装vs2015社区版
  14. 小团队如何提高工作效率
  15. 曾国藩-200句名言归纳
  16. 公司、办公司内如何限制上外网因特网、只能连内网局域网 - 注册表工具软件、批处理办法 - 注册表转换成批处理BAT,批处理如何修改注册表
  17. ngx.var与ngx.ctx的区别
  18. Java 创建并用应用幻灯片母版
  19. 五个温度带的分界线_五带的分界线??
  20. React Navigation 基本使用

热门文章

  1. orm mysql nodejs_【译】Nodejs最好的ORM
  2. python从mongodb里取出数据进行可视化_Python数据分析及可视化实例之MongoDB增删改查...
  3. python怎么创意出字符图形_创造课程系列:Python入门
  4. 服务器系统关了,各种服务器系统的关机
  5. java.lang.IllegalStateException: Ambiguous mapping found. Cannot map ' ' bean method
  6. linux命令行安装tomcat8,CentOS环境下安装JDK、Tomcat及相关Linux命令
  7. webstorm 添加php插件,webstorm常用插件分享
  8. android 模块混淆配置,使用android studio混淆多个模块
  9. asp.net 添加成功弹出个div提示_IOS12免越狱一键修改微信提示音
  10. android 10 apk 存储适配,AndroidQ(10) 分区存储适配方法