Python скачать все файлы с интернет адреса? - PullRequest
6 голосов
/ 01 октября 2011

Я хочу загрузить все файлы с интернет-страницы, фактически все файлы изображений. Я обнаружил, что модуль 'urllib' мне нужен. Кажется, есть способ загрузить файл, если вы знаете имя файла, но я не знаю.

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

Есть ли способ загрузить все файлы со страницы и, возможно, вернуть список?

1 Ответ

7 голосов
/ 01 октября 2011

Вот небольшой пример, чтобы вы начали использовать BeautifulSoup для такого рода упражнений - вы даете этому сценарию URL-адрес, и он будет распечатывать URL-адреса изображений, на которые имеются ссылки с этой страницы в атрибуте src в 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, но на этом этапе вы должны решить, как назвать их и что делать с загруженными изображениями, что не указано в ваш вопрос.

...