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:  
        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!!!

    * 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!!!
         É isso ai, agora é só usar sua imaginação e criatividade para criar mais funções para o seu irc bot!!! ;)