Que linguagem de script ou plataforma usar para downloads de páginas da web e interação de telas?

1

Aqui está o que eu preciso fazer? Quer saber qual plataforma é mais adequada - fácil de entender e fácil de codificar. Eu posso ter que terceirizar isso, pois isso pode estar muito acima do meu nível de habilidade.

Alguns antecedentes:

Eu tenho acesso a alguns bancos de dados de informações e sites por meio da minha biblioteca. A forma como os bancos de dados e sites são acessados é primeiro carregando uma página da biblioteca. Inserindo o número do cartão da minha biblioteca na caixa de diálogo e clicando no link Enviar. Em seguida, abre a página da Web autenticada (presumo que por cookies ou algo semelhante) para o serviço do qual desejo obter dados.

O que eu quero alcançar:

Eu quero criar uma compilação de arquivos PDF adequadamente nomeados em uma pasta. Alternativamente, e de preferência, gostaria de criar um arquivo PDF, que contém todas as páginas salvas, quais páginas estão hiper ligadas a partir de uma página de índice no arquivo One PDF.

Essas páginas devem ser provenientes de vários sites. O acesso aos sites é gratuito ou com uma senha ou acesso baseado em biblioteca (o que requer, até onde eu sei, interação baseada em tela).

Além disso, em um desses sites que podem ser acessados por meio do acesso à biblioteca, o endereço da página na barra de endereço não é alterado toda vez que eu vou para uma página diferente (terrível). Então, as muitas páginas que eu quero baixar para revisão offline, não se prestam a um simples tipo de comando do Wget. Até onde eu sei, é necessário clicar nas guias certas no site, para que a página carregue, e uma vez que a página carregue, ela precisa ser impressa como um arquivo PDF com um nome adequado, e compilada no arquivo. Um arquivo PDF.

Quer saber qual plataforma usar para desenvolver este miniaplicativo / script?

Alguém pode me ajudar a decidir qual plataforma é ideal para esse tipo de aplicativo? Idealmente, eu gostaria que a solução fosse orientada à chamada de função, de modo que, se eu tivesse que adicionar uma página da Web após um mês de desenvolvimento, não precisaria ir ao desenvolvedor para essas alterações de "configuração".

A plataforma não precisa ser Unix, embora eu ache que usar uma plataforma Unix crie a máxima flexibilidade. Posso executá-lo no meu Mac ou em um host on-line ou no meu Raspberry Pi:)

Obrigado !!

Atualização:

Acabei de ouvir de um amigo especialista em TI que o link ou o link pode ser boas opções. Também os estudará.

    
por jim70 07.09.2012 / 16:37

2 respostas

0

Eu sempre usei LWP (libwww-perl) ou WWW: Mechanize para trabalhos como este - existem vários tipos de Eu usaria python para, mas eu prefiro perl para qualquer coisa envolvendo envolvendo processamento de texto.

Provavelmente a mais complicada que eu escrevi foi há vários anos, quando eu e minha parceira possuímos uma pequena livraria - ela precisava de um programa para extrair informações sobre livros no site de um distribuidor de livros (digitado em ISBN ou código de barras) e inserir detalhes relevantes. em seu banco de dados de estoque (postgresql).

Observe que a criação de web-scrapers pode ser tediosa e demorada - você gasta muito tempo lendo o código-fonte HTML de várias páginas da Web e descobrindo como identificar e extrair apenas as informações que está procurando.

Não é particularmente difícil, mas requer um bom conhecimento de HTML e, pelo menos, habilidades de programação de nível médio.

É provável que você tenha que escrever um scraper diferente para cada site de banco de dados, em vez de um que faça todos eles - embora você possa escrever um script de wrapper que os inclua como funções ou chame scripts separados dependendo do site.

Os sites também tendem a mudar. Um raspador que está funcionando perfeitamente por seis ou doze meses pode de repente parar de funcionar porque o site foi redesenhado e não funciona mais do jeito que seu script espera.

Portanto, se algum dos bancos de dados tiver algum tipo de API para acesso programático (por exemplo, usando REST ou SOAP ou mesmo RSS então use isso em vez de copiar HTML. Infelizmente, isso é bastante improvável para o tipo de banco de dados disponível nas bibliotecas (os proprietários de banco de dados tendem a ter atitudes pré-web quanto aos dados e estão mais interessados em controlar e restringir o acesso do que qualquer outra coisa). Eles não querem facilitar o acesso de qualquer pessoa a seus dados por meio de um programa em vez de um navegador, e alguns envidam esforços significativos para ofuscar seus sites para tornar o código HTML difícil de entender ou exigir um intérprete de javascript para extrair links e outros dados.

Para um bom exemplo disso, não procure mais sites de TV - alguns deles realmente não querem que as pessoas usem seus dados para automatizar cronogramas de gravação de programas como MythTV, então há uma guerra tecnológica entre os desenvolvedores do site e autores de site-scraper.

Existem interpretadores de javascript para perl (incluindo um para uso com WWW :: Mechanize chamado WWW :: Scripter , mas às vezes é mais fácil examinar o código JavaScript do site, descobrir o que ele está fazendo para ofuscar o HTML e escrever código perl para desanexar os dados sem um interpretador js. / p>     

por 08.09.2012 / 03:06
2

Ok, então fiz algumas pesquisas depois que recebi o link para scrapy e achei que estava falando de um scraper da web. Para qualquer outra pessoa que possa se importar, aqui estão algumas informações que eu coletei.

Ainda não tenho certeza de como avançar, mas parece que o BeautifulSoup e o Mechanize podem ser o caminho mais fácil. O sarjado também parece muito bom devido à sua simplicidade. Alguma idéia?

Compilação de links da minha pesquisa

uma apresentação Visão geral das ferramentas de raspagem da web em python link

mecanizar link

Sopa Bonita: Nós o chamamos de Tartaruga porque ele nos ensinou. link

sarja: uma linguagem de script simples para navegação na Web link

Selenium - Automação do Navegador da Web link

PhantomJS: Headless WebKit com API JavaScript link

Mechanize é o meu favorito; excelentes recursos de navegação de alto nível (preenchimento e envio de formulários super simples).

O Twill é uma linguagem de script simples criada em cima de Mechanize

BeautifulSoup + urllib2 também funciona muito bem.

Scrapy parece um projeto extremamente promissor; é novo.

Alguém sabe de um bom rastreador da Web baseado em Python que eu poderia usar? - estouro de pilha link

Página inicial do PycURL link

Avaliação de escassez - BeautifulSoup + Mechanize parece ser mais simples (meu comentário aqui) com evenlet para obter concorrência

python - Vale a pena aprender Scrapy? - estouro de pilha link

Refinar, reutilizar e solicitar dados | ScraperWiki link

por 07.09.2012 / 17:49