Форум сайта python.su
0
Здравствуйте, совсем недавно начал осваивать, найдя мотивацию - загрузка картинок с nasa, хочется чтобы этот код заработал, а затем будет доработка и оптимизация, часть кода брал готовую из этой же ветки форума, буду благодарен за помощь.
import sys, urllib, re, urlparse from bs4 import BeautifulSoup k = 950616 while k > 950615: t=1 url = 'http://apod.nasa.gov/apod/ap'+str(k)+'.html' f = urllib.urlopen(url) soup = BeautifulSoup(f) for i in soup.findAll('img', attrs={'src': re.compile('(?i)(jpg)$')}): full_url = urlparse.urljoin(url, i['src']) print "image URL: ", full_url y = urllib.urlopen(full_url) t=t+1 with open(str(t)+'.jgp' , "wb") as code: code.write(y.read()) k = k+1
Офлайн
103
когда-то у меня был весь архив до 2009 года :)
вот мой код
import lxml.html import requests a = lxml.html.parse('http://apod.nasa.gov/apod/archivepix.html') for j, i in enumerate(a.xpath('.//a[starts-with(@href, "ap")]')): b = lxml.html.parse('http://apod.nasa.gov/apod/' + i.attrib['href']) s = "http://apod.nasa.gov/apod/" + b.find('.//img').get('src') with open('nasa_%d.%s' % (j, ['jpg', 'gif'][s.endswith('gif')]), 'wb') as p: p.write(requests.get(s).content)
k = 950616 while k > 950615: k = k+1
Отредактировано terabayt (Апрель 10, 2015 21:16:58)
Офлайн
0
Заметил и раньше даты, но для упрощения хотел пока получить вещественный результат нескольких картинок загруженных, а дальше уже заняться исправлениями, спасибо за свой код, но хочется этот доработать.
Проверил ваш на работоспособность, ошибка
Traceback (most recent call last): File "apod.py", line 6, in <module> s = "http://apod.nasa.gov/apod/" + b.find('.//img').get('src') AttributeError: 'NoneType' object has no attribute 'get'
Отредактировано admon (Апрель 10, 2015 21:20:44)
Офлайн
103
admon
но хочется этот доработать
import sys, urllib, re, urlparse from bs4 import BeautifulSoup k = 950615 t=1 while k < 950630: k = k+1 url = 'http://apod.nasa.gov/apod/ap'+str(k)+'.html' f = urllib.urlopen(url) soup = BeautifulSoup(f) i = soup.findAll('img') if i: i = i[0] full_url = urlparse.urljoin(url, i['src']) print "image URL: ", full_url y = urllib.urlopen(full_url) t=t+1 with open('nasa_%d.%s' % (t, ['jpg', 'gif'][full_url.endswith('gif')]), "wb") as code: code.write(y.read())
admonахах
Проверил ваш на работоспособность, ошибка
import lxml.html import requests a = lxml.html.parse('http://apod.nasa.gov/apod/archivepix.html') for j, i in enumerate(a.xpath('.//a[starts-with(@href, "ap")]')): b = lxml.html.parse('http://apod.nasa.gov/apod/' + i.attrib['href']).find('.//img') if b is not None: s = "http://apod.nasa.gov/apod/" + b.get('src') with open('nasa_%d.%s' % (j, ['jpg', 'gif'][s.endswith('gif')]), 'wb') as p: p.write(requests.get(s).content)
Отредактировано terabayt (Апрель 10, 2015 21:35:26)
Офлайн
0
Имена только сохранить какие они и были изначально, без переименования, да и создать 2 списка, один с предыдущими картинками загруженными, а второй новый, чтобы не перекачивать, буду думать.
#!/usr/bin/python #coding=utf-8 import sys, urllib, re, urlparse from datetime import date from bs4 import BeautifulSoup t = 1 s = 728460 # 95 год 16 июня d = date.fromordinal(s) p = date.today() while s < p.toordinal(): s = s + 1 d = date.fromordinal(s) url = 'http://apod.nasa.gov/apod/ap'+str(d.strftime("%y%m%d"))+'.html' f = urllib.urlopen(url) soup = BeautifulSoup(f) i = soup.findAll('img') if i: i = i[0] full_url = urlparse.urljoin(url, i['src']) print "image URL: ", full_url y = urllib.urlopen(full_url) t=t+1 with open('nasa_%d.%s' % (t, ['jpg','gif'][full_url.endswith('jpg')]), "wb") as code: code.write(y.read())
Офлайн