Scrubyt - Site Oficial de Serviços na Web de Software
scRUBYt! é uma estrutura de raspagem da web fácil de aprender e usar, mas poderosa e eficaz. A parte mais interessante é um DSL Web-scraping construído em HPricot e Mechanize, que permite navegar até a página de interesse, exemplo buffet de crepe extrair e consultar registros de dados com algumas linhas de código. É difícil descrever o scRUBYt! em poucas frases - você tem que ver por si mesmo!

Um novo lançamento quente, 0.3.4 foi lançado - o que há de novo?
Depois de muito tempo, muitas correções de bugs, sessões de brainstorming, codificação, codificação, codificação, latas de red bull e codificação, estamos orgulhosos de apresentar scRUBYt! 0.3.4!
A julgar pelas postagens no fórum , as pessoas não estão cientes de muitos recursos poderosos (o que é principalmente minha culpa, já que eu estava com preguiça de fazer qualquer documentação para os últimos 2 lançamentos - mas uma folha de referência e uma referência estão a caminho) - então eu gostaria de apresentar alguns novos recursos que foram adicionados ao scRUBYt! 0.3.4 para evitar isso, pelo menos para esta versão.
Em primeiro lugar, existem 3 novos tipos de padrão , dos quais 2 são particularmente interessantes
Padrão constante:
padrão 'algum texto constante', :type => :constante Às vezes, eu precisava de um pedaço de texto ou dados que não estavam contidos na página da web (ou era sempre constante, então raspá-lo significaria uma sobrecarga desnecessária) - talvez um comentário ou um campo obrigatório em um feed ou outro esquema predefinido. O padrão constante é útil exatamente nesses casos: o exemplo acima produzirá:Padrão de texto:
padrão 'td [ algum texto ] :all', :type => :text Um padrão de texto funciona de maneira diferente de um XPath: enquanto o padrão XPath depende da estrutura do documento, o padrão de texto não. Isso é essencial no caso de alguns sites (o exemplo mais típico é talvez a wikipedia) que não usam um único modelo para apresentar o conteúdo e/ou a estrutura muda com frequência, mas existem alguns rótulos de texto ou outros blocos de texto constantes que podem auxiliar na raspagem. A semântica do exemplo acima é: Encontre todas as tags que contêm o texto 'algum texto', em qualquer lugar da página. Tenho certeza que você notou a notação :all - atualmente :index (onde index é um número, então :0, :1 etc.) é suportado além de :all, significando 'dê-me o primeiro (:0), segundo (:1 ) etc. ocorrência da partida). Muitas adições podem ser esperadas para o padrão de texto no futuro (por exemplo, dê-me o texto mais longo em um ou dê-me s com um certo regexp etc.). Como sempre, sugestões são muito bem vindas!
Padrão de roteiro:
padrão lambda { |x| x. gsub ( 'x','y' ) . minúscula } Um padrão de script é uma maneira de executar um bloco Ruby arbitrário durante a raspagem. Sua entrada, como sempre, é a saída de seu padrão pai, representado por 'x'. Embora esse tipo de padrão seja bastante aprimorado no futuro (permitindo escolher mais padrões arbitrários como entrada, possibilidade de especificar entrada personalizada, simplificação da sintaxe (o material 'lambda {|x| }' é constante, portanto será provavelmente descartado) etc.) esse padrão já é bastante poderoso. Os casos de uso mais simples incluem filtragem e modificação de URLs, eliminação de espaços em branco ou outras modificações de string, como substituições no resultado, ramificação primitiva etc. executar coordenadas raspadas por meio de um geocodificador. Existem algumas adições à funcionalidade de saída : to_hash agora aceita um delimitador personalizado (para os casos em que a saída continha uma vírgula, o delimitador padrão) e há um novo método: to_flat_xml , que produz um xml simples semelhante a um feed em vez de a saída hierárquica gerada por to_xml .
O registro foi totalmente retrabalhado por Tim Fletcher. A diferença mais notável é que, por padrão, você não ficará sobrecarregado com todas as mensagens de depuração provenientes do scRRUByt!. Para habilitar o registro, você deve adicionar explicitamente uma linha antes do seu extrator:
Por último, mas não menos importante, muitos bugs foram corrigidos: o infame bug do padrão regexp, o bug da codificação (raspar páginas utf-8 deve estar ok agora), muitas correções no padrão de download e outros lugares.