我有一个 python 脚本,可以下载我通过 URL 指定的特定文件,我想知道是否有一种访问页面的好方法,并获取以某个扩展名结尾的每个文件。
示例:转到包含一些 .py 文件、一些 .pdf 文件和一些 .jpg 文件以及文本和其他链接的页面。然后将所有 .py 文件下载到当前目录。
这就是我现在所拥有的,它只抓取我选择的特定文件:
import urllib2
import sys
import httplib
from urlparse import urlparse
import numpy
if numpy.size(sys.argv) == 1:
print 'Need a command line argument -- Quitting'
quit()
urlin = sys.argv[1]
url = "http://"+str(urlin)
def checkUrl(url):
p = urlparse(url)
conn = httplib.HTTPConnection(p.netloc)
conn.request('HEAD', p.path)
resp = conn.getresponse()
return resp.status < 400
if checkUrl(url)==False:
print 'Website is not active'
quit()
else:
file_name = url.split('/')[-1]
u = urllib2.urlopen(url)
f = open(file_name, 'wb')
meta = u.info()
file_size = int(meta.getheaders("Content-Length")[0])
print "Downloading: %s Bytes: %s" % (file_name, file_size)
file_size_dl = 0
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
file_size_dl += len(buffer)
f.write(buffer)
status = r"%10d [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
status = status + chr(8)*(len(status)+1)
print status,
f.close()
有没有办法扩展它来做我最初提到的事情?
编辑:理想情况下,我希望能够使用相对标准的 python 包,但我并不完全反对奇怪的包。我也知道我可以下载链接所在的页面,并解析以 *.ext 结尾的字符串的 HTML,然后返回并通过将这些扩展附加到原始 URl 的末尾来下载这些扩展,但我是不擅长文件解析python。