只用urllib2下载html页面

Tao*_*sof 1 python urllib2 beautifulsoup

我想用urllib2和beautifulsoup抓取网页.但是我的代码内存不足,有些链接如下:

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

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

我的代码如下:

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()
Run Code Online (Sandbox Code Playgroud)

SHO*_*SHO 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
Run Code Online (Sandbox Code Playgroud)

最终,您需要Content-Type在响应标头中进行测试,并在text\html通过Web爬网程序运行URL之前使用它来确保它是类型.如果您想了解其他类型,请参阅这篇关于互联网媒体类型的维基百科文章text.