爬虫主要就是要过滤掉网页中没用的信息。抓取网页中实用的信息

一般的爬虫架构为:



在python爬虫之前先要对网页的结构知识有一定的了解。如网页的标签,网页的语言等知识,推荐去W3School:

W3school链接进行了解

在进行爬虫之前还要有一些工具:

1.首先Python 的开发环境:这里我选择了python2.7,开发的IDE为了安装调试方便选择了用VS2013上的python插件,在VS上进行开发(python程序的调试与c的调试几乎相同较为熟悉)。

2.网页源代码的查看工具:尽管每个浏览器都能进行网页源代码的查看。但这里我还是推荐用火狐浏览器和FirBug插件(同一时候这两个也是网页开发者必用的工具之中的一个);

FirBug插件的安装能够在右边的加入组件中安装;

其次来看试着看网页的源代码,这里我以我们要爬取的篮球数据为例:

如我要爬取网页中的Team Comparison表格内容为例:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjU4MTk4Mjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

先右键选中如我要爬取的比分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写函数,这里不再累述;

最后我们爬下来数据保存格式后样式为:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjU4MTk4Mjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

NICE

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjU4MTk4Mjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

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

Python爬虫:用BeautifulSoup进行NBA数据爬取的更多相关文章

  1. Python爬虫教程-13-爬虫使用cookie爬取登录后的页面(人人网)(下)

    Python爬虫教程-13-爬虫使用cookie爬取登录后的页面(下) 自动使用cookie的方法,告别手动拷贝cookie http模块包含一些关于cookie的模块,通过他们我们可以自动的使用co ...

  2. [Python爬虫] 使用 Beautiful Soup 4 快速爬取所需的网页信息

    [Python爬虫] 使用 Beautiful Soup 4 快速爬取所需的网页信息 2018-07-21 23:53:02 larger5 阅读数 4123更多 分类专栏: 网络爬虫   版权声明: ...

  3. Python爬虫工程师必学——App数据抓取实战 ✌✌

    Python爬虫工程师必学——App数据抓取实战 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统 ...

  4. Python爬虫工程师必学APP数据抓取实战✍✍✍

    Python爬虫工程师必学APP数据抓取实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...

  5. Python爬虫工程师必学——App数据抓取实战

    Python爬虫工程师必学 App数据抓取实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...

  6. 吴裕雄--天生自然PYTHON爬虫:安装配置MongoDBy和爬取天气数据并清洗保存到MongoDB中

    1.下载MongoDB 官网下载:https://www.mongodb.com/download-center#community 上面这张图选择第二个按钮 上面这张图直接Next 把bin路径添加 ...

  7. Python爬虫小白入门(六)爬取披头士乐队历年专辑封面-网易云音乐

    一.前言 前文说过我的设计师小伙伴的设计需求,他想做一个披头士乐队历年专辑的瀑布图. 通过搜索,发现网易云音乐上有比较全的历年专辑信息加配图,图片质量还可以,虽然有大有小. 我的例子怎么都是爬取图片? ...

  8. Python 爬虫练手项目—酒店信息爬取

    from bs4 import BeautifulSoup import requests import time import re url = 'http://search.qyer.com/ho ...

  9. Python爬虫教程-12-爬虫使用cookie爬取登录后的页面(人人网)(上)

    Python爬虫教程-12-爬虫使用cookie(上) 爬虫关于cookie和session,由于http协议无记忆性,比如说登录淘宝网站的浏览记录,下次打开是不能直接记忆下来的,后来就有了cooki ...

随机推荐

  1. AngularJS学习篇(二十一)

    AngularJS 动画 AngularJS 提供了动画效果,可以配合 CSS 使用. AngularJS 使用动画需要引入 angular-animate.min.js 库. <!doctyp ...

  2. js关闭子页面刷新父页面

    一.打开方式为window.open window.opener.location.reload(); 二.打开方式为window.showModalDialog 首先在打开时的时候要设置window ...

  3. 一起写框架-控制反转(Ioc)概述(二)

    控制反转概述 控制反转(Inversion of Control,英文缩写为IoC),就是将代码的调用的控制权,由调用方转移给被调用方. 如图:修改代码A类的代码,才能将B类的对象换成C类.代码的控制 ...

  4. Nginx实现负载均衡&Nginx缓存功能

    一.Nginx是什么 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl ...

  5. Hibernate框架学习之注解配置关系映射

         上篇文章我们通过注解对映射了单个实体类,但是具体项目中往往实体类之间又是相互关联的,本篇文章就是从实体类之间存在的不同关联角度,具体学习下如何映射他们之间的关联,主要涉及内容如下: 单向的一 ...

  6. js的call() ,apply() 两种方法的区别和用法,最白话文的解释,让枯燥滚粗!

    百度了一圈calll()函数和apply()函数,感觉还是糊里糊涂 正好我前几天刚又重新翻了一遍 那本 600多页 的圣经书,我习惯时不时的去打下基础,只是为了用来装逼,给人讲解....(我是有多蛋疼 ...

  7. flask 之定时任务开发

    最近开发我的接口测试平台 ,但是遇到了一个需求,需要开发定时任务,于是百度搜索,找到了这么一个叫 pFlask-APScheduler然后开始了我的第一次的学习,于是乎, 需求是这么的: 1.添加定时 ...

  8. windows下忘记mysql的root密码解决方法(图文)

    在windows下忘记mysql的root密码对于很对新手来说,也是会经常遇到的,我也刚好遇到啦,参考网上的解决办法,自己又整理啦一下. 1.首先需要查看mysql的服务是否启动. 打开cmd窗口,输 ...

  9. python学习笔记——Day 1

    python是一种什么语言? 编译与解释 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而解释器则是只在执行程序时,才一 ...

  10. 老男孩Python全栈开发(92天全)视频教程 自学笔记02

    day2课程目录: 操作系统的历史 二进制运算 字符编码与计算机容量 编程语言介绍 开发语言分类 演讲能力锻炼 day2课程内容梳理: 操作系统发展史: Unix系统 极其稳定 现在很多银行还在用 L ...