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

一般的爬虫架构为:



在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. Java开发必装的IntelliJ IDEA插件

    IDEA 插件简介 常见的IDEA插件主要有如下几类: 常用工具支持 Java日常开发需要接触到很多常用的工具,为了便于使用,很多工具也有IDEA插件供开发使用,其中大部分已经在IDEA中默认集成了. ...

  2. POI/Excel/HTML单元格公式问题

    一.问题描述 使用MyBatis从数据库中获取数据,然后用POI把数据填充到Excel模板中,生成最终的xls文件.把最终的xls文件转换为html文件,并返回给前台显示在Panel中. Excel模 ...

  3. iOS字符串修改及运用

    //创建字符串 直接赋值 NSString *lytTest = @"A common string"; 1.获取字符串的长度 NSLog(@"%d",lytT ...

  4. Android开发之漫漫长途 Ⅱ——Activity的显示之Window和View(2)

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  5. HTTP协议相关知识点

    主要参考 http://www.imooc.com/article/14397,来源:慕课网,作者种子_fe HTTP是超文本传输协议,主要特点有: 支持客户.服务器模式 简单快速:客户向服务器请求服 ...

  6. 机器学习数学|Taylor展开式与拟牛顿

    机器学习中的数学 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原创文章,如需转载请保留出处 本博客为七月在线邹博老师机器学习数学课程学习笔记 Taylor 展式与拟牛顿 索引 taylor ...

  7. HTML出现错位的问题

    引起网页HTML显示错位的几个常见问题: 1.在HTML代码中缺失元素的开始或结束标签 2.CSS设置中对边界.填充或边框的设置超出了父级容器的范围 3.CSS和HTML的编码不统一 4.浏览器的解析 ...

  8. Oracle 存储过程的导出导入序列的导出

    昨天发布网站,需要将oracle的存储过程导出来,再在新的电脑加上去.登陆—>工具—>导出用户对象—>选取需要导出的存储过程—>导出 保存格式为.sql.当然利用该种方法也可以 ...

  9. Node做中转服务器,转发接口

    查询各种资料,和整理网上一哥们不完整的接口.做成,可以使用的转发服务! 由于项目在做前后端分离,牵扯跨域和夸协议问题,临时抱佛脚,选择用nodejs做中转,我想应该好多人都用它.但是做普通的表单转发没 ...

  10. [转载] 理解OAuth 2.0

    转载自http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛 ...