我想从 Internet 页面下载所有文件,实际上是所有图像文件。 我发现“urllib”模块正是我所需要的。如果您知道文件名,似乎有一种下载文件的方法,但我不知道。
urllib.urlretrieve('http://www.example.com/page', 'myfile.jpg')
有没有办法从页面下载所有文件并可能返回一个列表?
最佳答案
这是一个让您开始使用 BeautifulSoup 进行此类练习的小示例 - 您为该脚本提供一个 URL,它将打印出从 src
中该页面引用的图像的 URL。 img
的属性以 jpg
结尾的标签或 png
:
import sys, urllib, re, urlparse
from BeautifulSoup import BeautifulSoup
if not len(sys.argv) == 2:
print >> sys.stderr, "Usage: %s <URL>" % (sys.argv[0],)
sys.exit(1)
url = sys.argv[1]
f = urllib.urlopen(url)
soup = BeautifulSoup(f)
for i in soup.findAll('img', attrs={'src': re.compile('(?i)(jpg|png)$')}):
full_url = urlparse.urljoin(url, i['src'])
print "image URL: ", full_url
然后你可以使用urllib.urlretrieve
下载 full_url
指向的每个图像,但在那个阶段你必须决定如何命名它们以及如何处理下载的图像,这在你的问题中没有指定。
关于Python从互联网地址下载所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7618993/