Wersja PDF - Aule Blog

Transkrypt

Wersja PDF - Aule Blog
Pobrano z http://aule.pythonanywhere.com/
Ściągniecie grafik z albumu picasy
przy pomocy kanału RSS
25 marca 2016 popełniony przez aule
Całkiem niedawno było o ściąganiu grafik ze strony. Tak jak pisałem to co
wrzuciłem ostatnio nie działa na wszystkie strony między innymi na Picase
od Google. Z racji iż potrzebowałem ściągnąć trochę zdjęć i nie były one mi
potrzebne w oryginalnym rozmiarze postanowiłem stworzyć coś swojego. Z
pomocą przyszedł mi https://github.com/anoopjt/Picasa-Downloader/blob/
master/picasa_downloader.py Na początku myślałem żeby korzystać tylko i
wyłącznie z tego kodu. Stwierdziłem jednak że jest on napisany z
wykorzystaniem bs3 a ja spróbuje zrobić to wykorzystując bs4 oraz zamiast
samemu robić progres bara wykorzystać bibliotekę tqdm.
Oto i kod:
from
from
from
from
from
from
urllib2 import urlopen
urlparse import urlsplit
os.path import basename, join, exists
os import mkdir
bs4 import BeautifulSoup
tqdm import tqdm
def get_rss_url(url):
urlsplit(url).netloc == "picasaweb.google.com"
y = urlopen(url).read()
soup = BeautifulSoup(y,'xml')
for link in soup.findAll('link'):
if link.has_attr('rel'):
if link['rel']=="alternate":
url = link['href']
return url
def download_photos(url, location):
if not exists(location):
mkdir(location)
feed_content = urlopen(url).read()
tags = BeautifulSoup(feed_content, 'lxml').findAll('media:content')
count = len(tags)
print "%d pictures found!" % count
for x in tqdm(tags):
y = "%(url)s" %x
filename = y.split('/')[-1]
img = urlopen(x["url"]).read()
fname = join(location, filename)
output = open(fname,'wb')
output.write(img)
output.close()
if __name__ == '__main__':
url = raw_input('Enter the Picasa web album url : ')
name_album = raw_input('Enter name of folder for album : ')
url= get_rss_url(url)
download_photos(url, name_album)