只用urllib2下载html页面

时间:2012-11-14 03:21:06

标签: python beautifulsoup urllib2

我正在尝试使用urllib2和beautifulsoup抓取网页。但是我的代码内存不足,有这样的链接:

http://downloads.graboidvideo.com/download_filter.php?file=GraboidVideoSetup.pkg&platform=Mac

这是一个视频下载链接。当我使用urllib2.urlopen()时,它会下载视频,这不是我想要的。有没有办法只下载网址的HTML?如果网址引用视频文件或其他文件,我基本上想跳过它,但我不知道该怎么做。

我的代码如下:

toy_url=http://downloads.graboidvideo.com/download_filter.php?file=GraboidVideoSetup.pkg&platform=Mac
headers = {'USER-Agent':'crawltaosof'}
req = urllib2.Request(url, None,headers)
page = urllib2.urlopen(req,timeout=0.51).read()

1 个答案:

答案 0 :(得分:5)

在使用read()方法之前,请考虑检查响应标头。这是一个例子。

>>> import urllib2
>>>
>>> request = urllib2.Request('http://downloads.graboidvideo.com/download_filter
.php?file=GraboidVideoSetup.pkg&platform=Mac')
>>> response = urllib2.urlopen(request)
>>>
>>> print response.info().getheader('Content-Type')
application/octet-stream
>>>
>>>
>>> request = urllib2.Request('http://www.yahoo.com')
>>> response = urllib2.urlopen(request)
>>>
>>> print response.info().getheader('Content-Type')
text/html;charset=utf-8

最终,您需要在响应标头中对Content-Type进行测试,并在通过网络爬虫运行网址之前使用它来确保其类型为text\html。如果您想了解其他text类型,请参阅Internet media types上的此维基百科文章。