网页中flash数据抓取(爬虫之前知识最为贤(一)-人生处万类贤)
优采云 发布时间: 2022-02-16 00:03网页中flash数据抓取(爬虫之前知识最为贤(一)-人生处万类贤)
关键词:
人生百态,知识是最有德行的。本期文章主要讲Python爬虫:用BeautifulSoup爬取NBA数据相关知识,希望对大家有所帮助。
爬虫的主要目的是过滤掉网页中的无用信息,抓取网页中的有用信息。
一般的爬虫架构是:
在python爬虫之前,你必须对网页的结构有一定的了解,比如网页的标签,网页的语言等,推荐去W3School:
W3school 链接查找
爬取前还有一些工具:
1.首先是Python的开发环境:这里我选择了python2.7。开发的IDE为了安装调试方便,选择在VS2013上使用python插件在VS上开发(python程序的调试和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数据的文章已经写完了。如果您的问题无法解决,请参考以下文章: