我正在尝试使用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()
答案 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上的此维基百科文章。