Найти - Пользователи
Полная версия: Загрузка картинок с apod.nasa
Начало » Python для новичков » Загрузка картинок с apod.nasa
1
admon
Здравствуйте, совсем недавно начал осваивать, найдя мотивацию - загрузка картинок с 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		
terabayt
когда-то у меня был весь архив до 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)
по вашему коду:
1. когда будет k = 950631 будет ошибка или же пустой файл, не проверял
посмотрите внимательно на ссылки, они идут не по возрастанию а по датам
2. даже если вы обработаете ошибки, то это будет бесконечный цикл
k = 950616
while k > 950615:
    k = k+1
это что такое ?!
admon
Заметил и раньше даты, но для упрощения хотел пока получить вещественный результат нескольких картинок загруженных, а дальше уже заняться исправлениями, спасибо за свой код, но хочется этот доработать.
Проверил ваш на работоспособность, ошибка
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'
terabayt
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)
admon
Имена только сохранить какие они и были изначально, без переименования, да и создать 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())
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB