Muitas pessoas começam a aprender Python com crawlers... Afinal, existem muitos recursos semelhantes na Internet e também muitos projetos de código aberto.
Os rastreadores da web de aprendizado de Python são divididos principalmente em 3 seções principais: rastreamento , análise , armazenamento
Quando inserimos uma url no navegador e pressionamos Enter, o que acontece em segundo plano?
Em termos simples, esse processo ocorre nas quatro etapas a seguir:
• Encontre o endereço IP correspondente ao nome de domínio. • Envie uma solicitação ao servidor correspondente ao IP. • O servidor responde à solicitação enviando de volta o conteúdo da página da web. • O navegador analisa o conteúdo da página da web.
Então, quais bibliotecas você precisa dominar para aprender répteis?
Em geral:
1. urllib - biblioteca de rede (stdlib).
2. pedidos - biblioteca de rede.
3.grab – Biblioteca de rede (baseada em pycurl).
4.pycurl – biblioteca de rede (binding libcurl).
5.urllib3 – biblioteca Python HTTP, pool de conexão segura, postagem de arquivo de suporte, alta disponibilidade.
6. httplib2 – Biblioteca de rede.
7.RoboBrowser – uma biblioteca Python simples e muito estilo Python, você pode navegar na web sem um navegador separado.
8. MechanicalSoup - uma biblioteca Python que interage automaticamente com sites.
9.mechanize - uma biblioteca de navegação na web programável e estável.
10.socket – a interface de rede subjacente (stdlib).
11. Unirest para Python – Unirest é um conjunto de bibliotecas HTTP leves disponíveis em vários idiomas.
12.hyper – cliente HTTP/2 para Python.
13. PySocks – versão atualizada e mantida ativamente do SocksiPy, incluindo correções de bugs e alguns outros recursos. Como um substituto para o módulo de soquete.
Estrutura do rastreador da Web
1. Um rastreador totalmente funcional
•grab - estrutura de rastreamento da Web (baseada em pycurl/multicur). •scrapy – framework web crawler (baseado em twisted), não suporta Python3. •pyspider – um poderoso sistema rastreador. •cola - Uma estrutura de crawler distribuída.
2. Outro
•portia - Rastreador visual baseado em Scrapy. •restkit - Kit de Recursos HTTP para Python. Ele permite que você acesse facilmente recursos HTTP e objetos criados em torno dele. •demiurge - Microframework de rastreador baseado em PyQuery.
analisador HTML/XML
1. Universal
• lxml – biblioteca de processamento HTML/XML eficiente escrita em linguagem C. XPath é suportado. • cssselect – analisa a árvore DOM e os seletores CSS. • pyquery - analisa árvores DOM e seletores jQuery. •BeautifulSoup – biblioteca de processamento HTML/XML ineficiente, implementada em Python puro. • html5lib - Gera DOM para documentos HTML/XML de acordo com a especificação WHATWG. Esta especificação é usada em todos os navegadores modernos. • feedparser - analisa feeds RSS/ATOM. •MarkupSafe - fornece strings de escape seguras para XML/HTML/XHTML. • xmltodict - Um módulo Python que permite trabalhar com XML como se estivesse lidando com JSON. • xhtml2pdf - Converte HTML/CSS em PDF. • desembaraçar - Converta facilmente arquivos XML em objetos Python.
2. Limpe
• Bleach – limpa HTML (requer html5lib). •sanitize – Traga clareza ao caótico mundo dos dados.
processamento de texto
Bibliotecas para analisar e manipular texto simples.
1. Geral
2.difflib – (biblioteca padrão do Python) para ajudar nas comparações diferenciais.
3.Levenshtein – Calcule rapidamente a distância de Levenshtein e a similaridade das cordas.
4. fuzzywuzzy – combinação de strings difusas.
5.esmre – acelerador de expressão regular.
6.ftfy – Organiza automaticamente o texto Unicode para reduzir a fragmentação.
processamento de linguagem natural
Bibliotecas para lidar com problemas de linguagem humana.
• NLTK - a melhor plataforma para escrever programas Python para processar dados de linguagem humana. •Pattern – Um módulo de mineração da web para Python. Ele tem ferramentas para processamento de linguagem natural, aprendizado de máquina e muito mais. • TextBlob – Fornece uma API consistente para tarefas detalhadas de processamento de linguagem natural. É desenvolvido sobre os ombros de gigantes com base em NLTK e Pattern. •jieba – ferramenta de segmentação de palavras chinesas. •SnowNLP – biblioteca de processamento de texto chinês. •loso – Outra biblioteca de segmentação de palavras chinesas.
Automação e emulação do navegador
• selenium - automatiza navegadores reais (Chrome, Firefox, Opera, Internet Explorer). •Ghost.py – wrapper para o webkit do PyQt (requer PyQT). • Spynner - wrapper para o webkit do PyQt (requer PyQT). • Splinter - Emulador genérico de navegador de API (driver web Selenium, cliente Django, Zope).
multiprocessamento
• threading - threading da biblioteca padrão do Python. Funciona bem para tarefas intensivas de E/S. Inútil para tarefas vinculadas à CPU por causa do python GIL. • multiprocessamento - a biblioteca Python padrão para executar vários processos. • aipo - Fila de tarefas/trabalhos assíncronos com base na transmissão de mensagens distribuídas. •concurrent-futures – O módulo concurrent-futures fornece uma interface de alto nível para invocar a execução assíncrona.
assíncrono
Biblioteca de programação de rede assíncrona
•asyncio – (biblioteca padrão Python em Python 3.4+) E/S assíncronas, loops de eventos, corrotinas e tarefas. •Twisted – Uma estrutura de mecanismo de rede orientada a eventos. • Tornado – Uma estrutura de rede e uma biblioteca de rede assíncrona. •pulsar - estrutura de simultaneidade orientada a eventos do Python. •diesel – Estrutura de E/S verde baseada em eventos para Python. • gevent - Uma biblioteca de rede baseada em corrotina para Python usando greenlets. • eventlet - framework assíncrono com suporte WSGI. •Tomorrow - Sintaxe de preparação fantástica para código assíncrono.
fila
• aipo - Fila de tarefas/trabalhos assíncronos com base na transmissão de mensagens distribuídas. •huey – pequena fila de tarefas multi-threaded. • mrq - Mr. Queue - Fila de tarefas distribuídas Python usando redis & Gevent. • RQ - Um gerenciador de filas de tarefas leve baseado em Redis. • simpleq – uma fila baseada em Amazon SQS simples e infinitamente escalável. •python-gearman – API Python para Gearman.
computação em nuvem
•picloud – Executa código Python na nuvem. • dominoup.com – executa código R, Python e matlab na nuvem
Extração de Conteúdo da Web
Uma biblioteca para extrair conteúdo da web.
•Texto e metadados para páginas HTML •jornal - extração de notícias, extração de artigos e curadoria de conteúdo em Python. • html2text – Converte HTML em texto formatado Markdown. •python-goose – Extrator de conteúdo/artigo HTML. •lassie – uma ferramenta de recuperação de conteúdo da web fácil de usar
WebSocket
Bibliotecas para WebSockets.
• Crossbar - Roteador de mensagens de aplicativo de código aberto (implementação Python de WebSocket e WAMP para Autobahn). •AutobahnPython – fornece implementações Python do protocolo WebSocket e do protocolo WAMP e é de código aberto. • WebSocket-for-Python – bibliotecas de cliente e servidor WebSocket para Python 2 e 3 e PyPy.
resolução de DNS
•dnsyo - Verifique seu DNS em mais de 1500 servidores DNS em todo o mundo. • pycares – interface para c-ares. c-ares é uma biblioteca C para solicitações de DNS e resolução de nomes assíncronos.
visão computacional
• OpenCV – Biblioteca de visão computacional de código aberto. • SimpleCV - Introdução às câmeras, processamento de imagem, extração de recursos, conversão de formato, com uma interface legível (baseada em OpenCV). • mahotas - Algoritmo de processamento rápido de imagens de computador (implementado inteiramente em C++), baseado inteiramente em arrays numpy como seu tipo de dados.
Alguns frameworks para desenvolvimento web
1.Django
Django é uma estrutura de aplicativo da Web de código aberto, escrita em Python, suporta muitos mecanismos de banco de dados, pode tornar o desenvolvimento da Web rápido e escalável e será constantemente atualizado para corresponder à versão mais recente do Python. a partir deste Comece com o quadro.
2. Frasco
Flask é uma estrutura de aplicativo da Web leve escrita em Python. Baseado no kit de ferramentas WerkzeugWSGI e no mecanismo de modelo Jinja2. Use a licença BSD.
O Flask também é conhecido como "microframework" porque usa um núcleo simples e extensões para adicionar funcionalidade adicional. O Flask não possui banco de dados ou ferramentas de validação de formulário usadas por padrão. No entanto, o Flask mantém a flexibilidade da expansão e essas funções podem ser adicionadas com a extensão do Flask: ORM, ferramentas de validação de formulário, upload de arquivos e várias tecnologias de autenticação aberta.
3. Web2py
O Web2py é um framework web de código aberto gratuito escrito em linguagem Python, projetado para desenvolver aplicativos web ágeis e rápidos, com aplicativos baseados em banco de dados rápidos, escaláveis, seguros e portáteis, seguindo o protocolo de código aberto LGPLv3.
O Web2py fornece uma solução completa. Todo o processo de desenvolvimento pode ser realizado no navegador. Ele fornece as funções de desenvolvimento online da versão da Web, gravação de modelo HTML, upload de arquivo estático e gravação de banco de dados. Outros recursos incluem registro e uma interface de administração automatizada.
4. Tornado
O Tornado é um servidor da Web (este artigo não o descreverá em detalhes) e também é um microframework como o web.py. A ideia do Tornado como um framework vem principalmente do Web.py. Você também pode usá-lo na página inicial do site Web.py eu vi tal passagem de Bret Taylor, o chefe do Tornado (o framework usado pelo FriendFeed que ele mencionou aqui pode ser considerado a mesma coisa do Tornado):
Devido a esse relacionamento, Tornado não será discutido separadamente posteriormente.
5.CherryPy
CherryPy é um framework web simples e muito útil para Python. Sua função principal é conectar servidores web com código Python com o mínimo de operação possível. Seus recursos incluem funções de análise integradas, um sistema de plug-in flexível e uma execução única A função de vários servidores HTTP é compatível com a execução nas versões mais recentes do Python, Jython e Android.
Mal-entendidos sobre a escolha da estrutura
Quando se trata da escolha do framework, muitas pessoas facilmente caem nos dois equívocos a seguir sem saber: qual framework é o melhor - não existe o melhor framework do mundo, apenas o framework mais adequado para você e sua equipe. A escolha da linguagem de programação também é a mesma. Se sua equipe está mais familiarizada com Python, use Python. Se você está mais familiarizado com Ruby, então use Ruby. Linguagens de programação e frameworks são apenas ferramentas. Acabamento é uma coisa boa.
Preste muita atenção ao desempenho - na verdade, a maioria das pessoas não precisa se preocupar muito com o desempenho da estrutura, porque o site que você desenvolve é simplesmente um pequeno site e não há muitos sites que podem atingir 10.000 IPs, e é ainda mais difícil chegar a 100.000 IPs. Muito pouco. Não faz muito sentido falar em desempenho sem uma certa quantidade de visitas, pois sua CPU e memória estão sempre ociosas.