Sie sind auf Seite 1von 18

Table

of Contents
Introduction 1.1
1 - FTP 1.2
2 - Email 1.3
3 - Noticias 1.4
4 - Cliente Web 1.5
Libreria urllib 1.5.1
Parsear HTML 1.5.2
5 - Servidor Web 1.6
Servidores de ayuda 1.6.1
Django 1.6.2

1
Introduction

SNIPPETS PARA PROGRAMACIN WEB


CON PYTHON
Primer experimento con Gitbook que hago

2
1 - FTP

FTP
Siempre que conectemos con un servidor, es importante que cuando acabemos
cerremos la conexin. Para usar FTP sobre Python tendremos los siguientes
pasos:

1) Importamos la librera

import ftplib

2) Conectamos con el servidor -> login

SERVER = 'nombre-del-server'
USER = 'mi-usuario'
PASSWORD = 'mi-password'

connect = ftplib.FTP(SERVER)
connect.login(USER, PASSWORD)

3) Si queremos ver los datos que hay en servidor

data = []
connect.dir(data.append)
for line in data:
print(line)

4) Descargar un archivo -> retrieve

filename = 'mi-archivo'
connect.retrlines('RETR ' + filename)

5) Subir un archivo -> store

3
1 - FTP

filename = 'mi-archivo'
file = open(filename, 'rb')
connect.storbinary('STOR ' + filename, file)

6) Cerrar la conexin con el servidor -> quit

connect.quit()

4
2 - Email

Email

Mandar email
Los pasos para mandar emails son:

1) Importar la librera y mdulos correspondientes

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

2) Creamos las variables necesarias:

SERVER = 'smtp.gmail.com:587'
REMITENTE = 'mi-correo'
DESTINATARIO = 'correo-de-mi-amigo'
ASUNTO = 'Asunto del mensaje que voy a enviar'
MENSAJE = 'El mensaje propiamente dicho'
USER = 'mi-usuario'
PASS = 'mi-contrasea'

3) Genero el mensaje:

msg = MIMEMultipart()
msg['From'] = REMITENTE
msg['To'] = DESTINATARIO
msg['Subject'] = ASUNTO
msg.attach(MIMEText(MENSAJE))

4) Definir el servidor con el que nos vamos a conectar y probar que funcione:

server = smtplib.SMTP(SERVER)
server.ehlo()

5
2 - Email

5) Iniciar sesin en el servidor:

server.login(USER, PASS)

6) Enviar el email:

server.sendemail(REMITENTE, DESTINATARIO, msg.as_string())

7) Por ltimo, cerrar sesin:

server.quit()

Leer email
Los pasos para leer emails son:

1) Importar la librera y mdulos correspondientes

import imaplib

2) Crear las variables necesarias:

SERVER = 'imap.gmail.com'
USER = 'mi-usuario'
PASS = 'mi-contrasea'
MAIL = 'mi-correo'

3) Conectar con en el servidor:

server = imaplib.IMAP4_SSL(SERVER, 993)

4) Iniciar sesin:

server.login(USER, PASS)

6
2 - Email

5) Seleccionar mensaje a leer:

status, count = server.select('Inbox)


status, data = server.fetch(count[0], '(UID BODY[TEXT])')

print data[0][1] # Mensaje escogido

6) Por ltimo, cerrar sesin y conexin:

server.close()
server.logout()

7
3 - Noticias

Noticias
Para leer noticias sobre seguimos los siguientes pasos:

1) Importar librera para el Newtwork News Transfer Protocol

from nntplib import *

2) Crear el servidor

URL_FREE_NETWORK_NEWS_SERVER = 'web.aioe.org'
server = NNTP( URL_FREE_NETWORK_NEWS_SERVER )

3) Definir los parmetros para conectar con el servidor

(resp, count, first, last, name) = server.group('comp.lang.pytho


n')

resp - Response del servidor


count - N de noticias cargadas
first - N de la 1 noticia
last - N de la ltima noticia
name - Nombre de la noticia

4) Pedirle al servidor que rango / tipo de noticias hay

(resp, subs) = server.xhdr('subject', (str(first)+'-'+str(last)


) )

subs - Gneros Por ejemplo muestro los 10 ltimos por pantalla y elijo cual
quiero ver

for subject in subs[-10:]:


print(subject)
number = input('Elija artculo')

8
3 - Noticias

5) Mostrar artculo por pantalla

(reply, num, id, list) = server.body(str(number))


for line in list:
print(line)

reply -
num -
id -
list - La noticia en s

9
4 - Cliente Web

4 - Cliente Web

10
Libreria urllib

Libreria urllib
1) Importar la librera urllib

import urllib

2) Abrir / Obtener la url de la pgina web

url = urllib.open('http://www.klinware.com')

3) Sacar contenido de la pgina web

contents = url.readlines()

Si quisiera ver todo el contenido puedo poner print(contents)

Si quisiera solo una lnea contents[1]

Si quisiera unas cuantas lneas contents[1:10]

4) Una vez con esto puedo sacar la informacin de la cabecera

headerinfo = url.info()
date = headerinfo.getheader('date')
contenttype = headerinfor.getheader('content-type')

5) Para volcar el contenido a un fichero

urllib.urlretrieve('http://www.klinware.com', filename='urlconte
nt')

urlcontent - Fichero con la web volcada

11
Libreria urllib

12
Parsear HTML

Parsear HTML

Obtener contenido de la pgina


1) Importar libreras

import htmllib, urllib, formatter, sys

2) Abrir una pagina y obtener su contenido

web = urllib.urlopen('http://www.klinware.com')
data = web.read()
web.close()

3) Dar formato a la informacin

format = formatter.AbstractFormatter(formatter.DumbWritter(sys.s
tdout))

Con DumbWritter obtenemos 72 caractres por lnea


sys.stdout es para sacar la informacin por consola

4) Parsear la informacin HTML

ptext = htmllib.HTMLPaser(format)
ptext.feed(data)
ptext.close()

Obtener links
3) No doy ningun formato

13
Parsear HTML

format = formatter.AbstractFormatter(formatter.NullWriter()))

4) Parsear HTML

ptext = htmllib.HTMLParser(format)
ptext.feed(data)

5) Obtener los links de la propiedad anchorlist

for link in ptext.anchorlist:


print(link)

Scrapear citas
1) Importar libreras

import urllib, re, sys

2) Definir smbolo a escrapear

symbol = sys.argv[1]

3) Descargar contenido de pgina

url = 'http://finance.google.com/finance?q='
content =urllib.urlopen(url+symbol).read()

4) Scrapear citas

m = re.search('span id="ref.*>(.*)<', content)

5) Mostrar citas

14
Parsear HTML

if m:
quote = m.group(1)
else:
quote = 'no quote for symbol: ' + symbol
print(quote)

Web Crawler
1) Importar librerias

import urllib, htmllib, formatter, re, sys

2) Cargar la pgina, dar formato y parsear links

url = sys.arv[1]
web = urllib.open('http://' + url)
data = web.read()
web.close()
format = formatter.AbstractFormatter(formatter.NullWriter())
ptext = htmllib.HTMLParser(format)
ptext.feed(data)
links = []
links = ptext.anchorlist

3) Crawlear los dems links

15
Parsear HTML

for link in links:


if re.search('http', link) != None:
print(link)
web = urllib.urlopen(link)
data = web.read()
web.close()
ptext = htmllib.HTMLParser(format)
ptext.feed(data)
morelinks = ptext.anchorlist
for alink in morelinks:
if re.search('http', alink) != None:
links.append(alink)

16
5 - Servidor Web

5 - Servidor Web

17
Django

Django

18

Das könnte Ihnen auch gefallen