网页中flash数据抓取(爬虫之前知识最为贤(一)-人生处万类贤)

优采云 发布时间: 2022-02-16 00:03

  网页中flash数据抓取(爬虫之前知识最为贤(一)-人生处万类贤)

  关键词:

  人生百态,知识是最有德行的。本期文章主要讲Python爬虫:用BeautifulSoup爬取NBA数据相关知识,希望对大家有所帮助。

  爬虫的主要目的是过滤掉网页中的无用信息,抓取网页中的有用信息。

  一般的爬虫架构是:

  

  在python爬虫之前,你必须对网页的结构有一定的了解,比如网页的标签,网页的语言等,推荐去W3School:

  W3school 链接查找

  爬取前还有一些工具:

  1.首先是Python的开发环境:这里我选择了python2.7。开发的IDE为了安装调试方便,选择在VS2013上使用python插件在VS上开发(py​​thon程序的调试和c的调试差不多);

  2.查看网页源代码的工具:虽然每个浏览器都可以查看网页源代码,但我还是推荐使用火狐浏览器和FirBug插件(同时这两个也是web开发者的工具必须使用) of 一);

  FirBug插件的安装可以在右侧的插件组件中安装;

  接下来,让我们尝试查看网页的源代码。这里我以我们要爬取的篮球数据为例:

  比如我要爬取网页中Team Comparison表的内容:

  

  首先,右键选择我要爬取的分数32-49,右键选择查看带有firBug的元素,(FirBug的另一个好处是网页上会显示源码显示的样式查看源代码时,网页底部会弹出网页源代码和32-49分的位置和源代码,如下图:

  

  可以看到32-49是网页的源代码:

  32-49

  其中,td为标签名,class为类名,align为格式,32-49为标签内容,即我们要爬取的内容;

  但是,在同一个网页中有很多相似的标签和类名,单靠这两个元素是爬不下我们需要的数据的。这时候我们需要查看这个标签的父标签,或者上一层的标签。提取我们要爬取的数据的更多特征,过滤掉其他不想爬取的数据,比如我们选择这张表所在的标签作为我们过滤的第二个。

  特征:

  

Team Comparison

  我们再分析一下网页的URL:

  比如我们要爬取的网页的网址是:

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

  因为有骑网站的经验,可以去这里

  是一个域名;

  /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库对网页进行分析,然后使用.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() 是测试网页是否可以打开;

  汤=美丽汤(

  回复,

  'html.parser',

  from_encoding='utf-8'

  )

  代表 Beautiful 进行网页分析;

  links2=soup.find_all('div',class_=”sdi-so”,limit=2) 用于特征值的查询和返回

  其中,我们要找'div'的label,class_=”sdi-so”,limit=2就是找两个为limit(这是为了过滤其他相似的label)

   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,系统,xlwt

  功能:

  文件=xlwt.Workbook()

  table=file.add_sheet('shuju',cell_overwrite_ok=True)

  table.write(0,0,'team')

  table.write(0,1,'W/L')

  table.write(行,列,q.text)

  file.save('NBA.xls')

  为最基本的excel写函数,这里不再赘述;

  最后,我们爬下来,将数据保存为以下格式:

  

  好的

  

  我想,最深的爱是分开后,我会像你一样活出自己。

  至此,这篇关于Python爬虫:用BeautifulSoup爬取NBA数据的文章已经写完了。如果您的问题无法解决,请参考以下文章:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线