Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2015 20:10:50

admon
Зарегистрирован: 2015-04-10
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка картинок с apod.nasa

Здравствуйте, совсем недавно начал осваивать, найдя мотивацию - загрузка картинок с 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		

Офлайн

#2 Апрель 10, 2015 21:10:47

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Загрузка картинок с apod.nasa

когда-то у меня был весь архив до 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
это что такое ?!



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Апрель 10, 2015 21:16:58)

Офлайн

#3 Апрель 10, 2015 21:17:48

admon
Зарегистрирован: 2015-04-10
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка картинок с apod.nasa

Заметил и раньше даты, но для упрощения хотел пока получить вещественный результат нескольких картинок загруженных, а дальше уже заняться исправлениями, спасибо за свой код, но хочется этот доработать.
Проверил ваш на работоспособность, ошибка

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)

Офлайн

#4 Апрель 10, 2015 21:27:48

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Загрузка картинок с apod.nasa

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)



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Апрель 10, 2015 21:35:26)

Офлайн

#5 Апрель 10, 2015 23:44:11

admon
Зарегистрирован: 2015-04-10
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка картинок с apod.nasa

Имена только сохранить какие они и были изначально, без переименования, да и создать 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())

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version