2011-10-01 70 views
5

我想從互聯網頁面下載所有文件,實際上是所有的圖像文件。 我發現'urllib'模塊是我需要的。如果知道文件名,似乎有一種下載文件的方法,但我不知道。Python從互聯網地址下載所有文件?

urllib.urlretrieve('http://www.example.com/page', 'myfile.jpg') 

是否有下載所有的從頁面文件,並可能返回一個列表的方法?

+2

你聽說過'wget'嗎? –

+1

[用Python抓取Web]的可能重複(http://stackoverflow.com/questions/2081586/web-scraping-with-python) – Mat

+0

找不到更多信息。也許是一個小例子腳本? – Brock123

回答

6

下面是一個小例子,讓您開始使用BeautifulSoup進行這種練習 - 您爲此腳本提供了一個URL,並且它將打印出src屬性img標籤中引用的圖像的URL爲此用jpgpng

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,但在這個階段,你必須決定如何給它們命名,並與下載的圖像做什麼,在你的問題中沒有指定。