13 de nov. de 2012

Criando um Webcrawler em Python

7 comentários
     Os webcrawlers são processos automatizados para busca ou manutenção de sites (checar links e validação do código). Através dos crawlers temos os mecanismos de buscas do Google e Altavista!! Eles interagem com o ambiente através do uso de protocolos HTTP, SMTP, RSS, etc. O Googlebot usa o algoritmo do PageRank para classificar a ordem de importância dos sites. 
    Exitem questões legais para o uso de crawlers, por isso respeite as regras do robots.txt e suas políticas de cortesia.
     Os webcrawlers se identificam no servidor pelo User-Agent http header. Podemos ver esses dados usando o urllib2:

import urllib2
url = raw_input('url: ')
if 'http' not in url:
 url = 'http://'+url
resposta = urllib2.urlopen(url)
html = resposta.read()
print html.split('\n')[0]
print resposta.info()

    Agora vamos aos exemplos!! Para testar os códigos abaixo, é preciso instalar a biblioteca BeautifulSoup e o Requests: 
$ apt-get install python-bs4
$ easy_install beautifulsoup4
ou
$ pip install beautifulsoup4

$ pip install requests
ou
$ easy_install requests 

25 de out. de 2012

Testes Funcionais - Selenium WebDriver

2 comentários
     O Selenium é uma ferramenta para automatização do navegador (playback e scripting), usado para testar aplicações web.  No Django 1.4 temos o LiveServerTestCase para testar o servidor, facilitando a integração de testes do Django com o Selenium.
    O WebDriver são as ações do navegador através da API (no Django é usado a linguagem Python). Ele suporta diferentes navegadores: Firefox, Chrome, IE. Suas funções são: pegar a página, os elementos, adicionar um input e manipular esses elementos.

Instalação:
# pip install selenium
ou
# easy_install selenium

Buscando elementos:
driver.find_element_by_id('id_usuario') 
driver.find_element_by_name('zeldani')
driver.find_element_by_xpath('//input')
driver.find_element_by_link_text('Proximo')
driver.find_element_by_partial_link_text('Prox')
driver.find_element_by_tag_name('frame')
driver.find_element_by_class_name('body')
driver.find_element_by_css_selector('input') 

1 de out. de 2012

Django e MySQL

0 comentários
    O Django é um framework feito em Python, segue a arquitetura model-view-controller e foi criado oficialmente em 2005 no Kansas, sob a licença BSD. Recebeu esse nome em homenagem ao guitarrista de jazz Django Reinhardt.

Instalação:
     Baixe o Django pelo site oficial: https://www.djangoproject.com/download/.

      Descompacte o arquivo com o comando:  
$ tar -zxvf Django-1.4.1.tar.gz

       Acesse o diretório e instale:
$ cd cd Django-1.4.1/
$ sudo python setup.py install


20 de set. de 2012

Zen of CherryPy

0 comentários
     O CherryPy é um framework gratuito e open source criado por Rémi Delon (2002), voltado para o desenvolvimento de aplicações web, utilizando a linguagem Python. Suas aplicações costumam ser bastante simples, onde o servidor não necessita de customizações extensivas, bastando ter o interpretador Python instalado.
  • Instalação:
     Faça o download da versão atualizada pelo repositório do souce forge.
     Descompacte o arquivo com o comando:
# tar zxvf CherryPy-2.2.1.tar.gz

     Acesse o diretório criado: # cd CherryPy-2.2.1
     Instale o framework: # python setup.py install

9 de set. de 2012

Dicas Python - Criptografia

0 comentários

     As codificações em base são usadas para guardar ou transferir dados que são restritos do US-ASCII  (caracteres baseados no alfabeto inglês - códigos de 0 à 31, 127 em decimal não podem ser impressos).

19 de ago. de 2012

Python - Classes

0 comentários
- Programação orientada a objetos:
    É uma disciplina da programação que busca unificar a idéia de algoritmos (sequências de instruções) e estrutura de dados através do conceito de Objeto (unidade de software que encapsula os algoritmos e os dados que ele atua).
     Alguns conceitos importantes da OOP:
- Poliformismo: permite que dois objetos diferentes possam ser usados de maneira parecida. 
- Abstração ou Encapsulamento: é o que permite que um objeto seja utilizado sabendo apenas sua interface, não sendo necessário saber sobre a implementação dos métodos.
- Herança: é o que permite construir objetos que são as especializações de outros objetos. 

- Objetos em Python:
     
       A linguagem Python suporta orientação à objetos através de classes.
    - Classes: pode ser definida como uma fábrica de objetos, todos com as mesmas características. 
    - Instâncias: concretização de uma classe. 
      As principais entidades da oop do python são as classes e as instâncias da classe. Observe a figura ao lado. A fabrica representa as classes e os ursinhos as instâncias das suas respectivas classes. Os atributos das classes são as estruturas particulares de cada instância como a cor ou pata.

    15 de ago. de 2012

    Python - Usando o módulo threading

    1 comentários

    Definição de Thread:
         Thread = Linha ou encadeamento de execução, é uma forma de processo que se divide em duas ou mais vezes para executar uma tarefa. Ex: em um jogo um thread pode executar os gráficos e outro o aúdio, onde o usuário percebe sua execução simultanea em tempo real. Um dos seus benefícios é que se um thread ficar parado (em estado de bloqueio) à espera de algum dispositivo de entrada/saída, um outro thread que estava na fila de espera entra em execução.
         Um thread não é um programa, mas executa dentro do programa. É possível executar vários threads em um único programa (multithread):

    Módulo threading:
         No Python, o módulo nativo para executar os threads é o Thread. Ele é interpretado por sistemas que suportem o posix threads (pthreads). O módulo Threading é uma interface de alto nível para utilização de threads. Esse módulo permite que os thread sejam executados de uma maneira mais fácil.

    27 de jul. de 2012

    Common Lisp

    0 comentários
        Lisp é uma linguagem de programação funcional, inventada por John McCarthy em 1958.  Houve uma época que existiam muitos dialetos Lisp, mas hoje em dia o mais usado é o Common Lisp e o Scheme.
         Common Lisp é uma implementação do Lisp. É uma linguagem funcional (prioriza as funções) e procedural (enfatiza as mudanças de estados do programa), com usos convencionais e na IA. Foi criada por Guy L. Steele  nos anos 80 com a finalidade de combinar os diversos dialetos Lisp e torná-los compatíveis. 
        O Lisp tem uma sintaxe simples, clara e simétrica. Ele usa parênteses para organizar os códigos numa lista!!

    • Instalando o CLisp:
     O CLisp é uma implementação do Common Lisp criada por Bruno Haible.  Para instalar o CLisp você pode fazer o download no site http://www.clisp.org/ ou usar o comando apt-get install clisp.

    20 de jul. de 2012

    Comandos básicos do Linux

    0 comentários
       Nesse artigo vou falar um pouco sobre alguns comandos básicos do Linux (http://www.paul.sladen.org/pronunciation/) lol, bastante útil para o dia a dia, pois de vez em quando acabo esquecendo alguns comandos, então nada melhor do que consultar algum lugar para lembrar!!

    • Ajuda:
    man man
    whatis lpc
    apropos chmod

      O comando whatis é extraido da documentação no banco de dados chamado whatis, localizado no diretório /usr/man. Ele informa o que o comando faz.
         O comando apropos busca no banco de dados whatis todas as ocorrências relacionadas ao nome do comando. Usado para localizar comandos ou ações ligadas aos programas instalados no sistema.
    • Usando vários comandos:
    cal; date; time

    20 de mai. de 2012

    Criando um repositório no Github

    0 comentários
            Oi, nesse artigo vou explicar como criar um repositório no Github pelo Linux, desde a criação do usuário até a realização do upload do primeiro arquivo!!! ;)
            O Github é uma rede social para programadores, onde é possível hospedar códigos de diversas linguagens de programação, trocar informações e ajudar no desenvolvimento dos programas.
    • Passo a passo das configurações inicias do GitHub:
    1) Realizar o cadastro no https://github.com. 
    2) É hora de preparar a máquina, fazendo o download dos componentes gits através do seguinte código:



    3) Verificar se já existe uma chave, e fazer o backup dela.


    26 de abr. de 2012

    Módulo Optparse

    0 comentários
        O optparse é uma biblioteca da linguagem Python que permite ao usuário obter ajuda através do comando de linha, ou seja, permite a criação de manuais!!! É possível criar opções curtas ex: "-z" e longas "--zeldani".
         Vamos usar o seguinte código:  
    #!/usr/bin/env python
    import optparse
    import sys
    parser = optparse.OptionParser()
    # O add_option adiciona uma opcao, o action='help' mostra as opcoes de ajuda.
    parser.add_option('-?', action='help', help="Mostra a mensagem de ajuda.")
    parser.add_option('--esse-eh-um-argumento-mtoooo-longooooooooo', metavar='algumacoisa', help='Exemplo de um argumento longo, que funciona numa boa nos manuais!!', action='help')
    parser.add_option('-z', '--zeldani', help='Visite: zeldani.blogspot.com ;D', metavar='Zeldani', action='help')
    parser.add_option("-f", "--file", dest="filename", action="append",
    help="Exibe o arquivo.", metavar="FILE")
    #dest = especifica o nome da variavel.
    #action = fala para o optparse o que fazer quando uma opcao for selecionada. (o append adiciona o argumento na lista)
    #help = descricao da opcao.
    #metavar = eh mais uma descricao da opcao.
    parser.add_option("-q", "--quiet",
    action="store_false", dest="verbose", default=True,
    help="Nao imprime mensagens de status para o stdout")
    #stdout (Standard Output) = eh onde o programa grava os dados de saida.
    #store_false = eh uma opcao flag, que define a variavel como verdadeiro ou falso.
    (options, args) = parser.parse_args() # diz ao Optparse para analisar os argumentos.
    #options = contem os valores de todas as opcoes.
    #args = eh uma lista de argumentos que os parsers precisam reconhecer.
    if options.filename: # Se for escolhida a opcao filename, vai ser impresso o arquivo atraves da opcao verbose.
    for filename in options.filename:
    if options.verbose:
    print "Imprimindo o arquivo: ",filename
    try:
    f = open(filename)
    for line in f.readlines():
    print line.rstrip()
    except IOError:
    print "Arquivo nao encontrado: "+options.filename
    view raw optparser.py hosted with ❤ by GitHub
        Salve como zeldani.py e para testar o arquivo, você pode usar os seguintes comandos:
    $ python zeldani.py -h ou --help
    $ python zeldani.py -?
    $ python zeldani.py -z ou --zeldani
    $ python zeldani.py -f /home/zeldani/teste.txt

    * Fontes:
    http://www.alexonlinux.com/pythons-optparse-for-human-beings
    http://docs.python.org/library/optparse.html
    http://www.eurion.net/python-snippets/snippet/Show%20optparse.html

    20 de abr. de 2012

    Enviando emails usando Python Script

    2 comentários
         Ola, nesse post vou explicar com enviar emails usando a biblioteca smtplib!!! ;)
          O código é bastante simples, mas você pode usar a criatividade para colocar mais funções rsrs!!!  No exemplo abaixo eu usei o servidor do hotmail (smpt.live.com), você pode modificar ele de acordo com sua preferência!!!
    import smtplib
    print "\n=============[ Zeldani's Mail ]=============\n"
    destinatario = raw_input('\nDe:')
    para = raw_input('\nPara: ')
    mensagem = raw_input('\nMensagem: ')
    usuario = 'usuario@gmail.com'
    senha = 'senha'
    server = smtplib.SMTP(' smtp.gmail.com:465')
    server.starttls()
    server.login(usuario,senha)
    server.sendmail(destinatario, para, mensagem)
    print "\nDone!! ;P"
    server.quit()
    view raw email.py hosted with ❤ by GitHub

    * Dica: Ao nomear o arquivo, evite nomes como Email.py pois pode ocorrer um erro de conflito de nomes ao importar os pacotes smtp.

    * Fontes:
    http://thysmichels.com/2012/02/07/python-send-email-gmail/
    http://docs.python.org/library/smtplib.html
    http://love-python.blogspot.com.br/search/label/Python%20send%20email

    31 de jan. de 2012

    Criando um IRC Bot em Python

    3 comentários
         Nesse artigo vou explicar como criar um IRC Bot usando a linguagem Python. Resolvi escrever o artigo pela dificuldade que encontrei em achar materiais sobre o assunto, então reuni o que achei para colocar nesse post!!!
    import sys
    import socket
    import string
    import os
    servidor="irc.freenode.net"
    porta=6697
    nick="zeldani"
    ident="zeldani"
    realname="zeldani"
    canal="#canal"
    senha="aqui vc coloca a senha do bot, caso ele for registrado"
    quitmsg="Afk"
    print 'Conectando...'
    s=socket.socket( )
    s.connect((servidor, porta))
    s.send("NICK %s\r\n" % nick)
    s.send("USER %s %s bla :%s\r\n" % (ident, servidor, realname))
    s.send("JOIN :%s\r\n" % canal)
    s.send ( 'PRIVMSG NickServ :Identify '+ senha+'\r\n')
    while True:
    ircmsg = s.recv(2048)
    print(ircmsg)
    data = s.recv(4096)
    print data
    if data.find ( 'PING' ) != -1:
    s.send ( 'PONG ' + data.split() [ 1 ] + '\r\n' )
    # Se o "!hello" for encontrado na linha de comando, ira mandar no canal a mensagem "Hello World : canal !!!".
    if data.find(':!hello') != -1:
    s.send("PRIVMSG %s :%s\r\n"% (canal, "Hello World : " + canal + " !!!"))
    if data.find(':!quit') != -1:
    s.send('quit :%s\r\n' % quitmsg)
    view raw ircbot.py hosted with ❤ by GitHub
         É isso ai, agora é só usar sua imaginação e criatividade para criar mais funções para o seu irc bot!!! ;)