Python如何从网址下载所有文件?

6
我想下载一个网页上的所有文件,实际上是所有的图片文件。 我找到了 'urllib' 模块,这似乎是我需要的。如果您知道文件名,那么似乎有一种方法可以下载文件,但我不知道文件名。
urllib.urlretrieve('http://www.example.com/page', 'myfile.jpg')

有没有一种方法可以下载页面上的所有文件,并可能返回一个列表?


1
可能是 使用 Python 进行网络抓取 的重复内容。 - Mat
找不到太多信息。也许需要一个小的示例脚本? - Brock123
Brock123,你看了上面@Mat发的链接吗?它指向BeautifulSoup,可以用来爬取页面并找到所有你想要下载的文件的URL。 - John Keyes
1个回答

7
以下是一个使用BeautifulSoup进行此类练习的小例子 - 您将此脚本赋予一个URL,它将打印出从该页面引用的图像的URL,这些图像在标记的src属性中以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指向的图像,但在那个阶段,您必须决定如何命名它们以及对已下载的图像要采取什么措施,这在您的问题中没有明确说明。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接