Tag: Scraping

Delicious-Ext Atualizado

Quando eu fiz um post descrevendo a extensão da API do Delicious feita com scraping, um dos riscos que eu citei era de o site mudar sua estrutura, fazendo com que os scripts de scraping quebrassem.

Pois há dois dias atrás aconteceu, o Delicious sofreu reformulações e a implementação que eu tinha foi pro espaço.

Já consertei todos os problemas e consegui implementar já algumas funções novas, como a busca por “Fresh links” que retornam páginas mais atuais, seguindo a tendência de instant search que anda sendo discutida bastante atualmente. Algumas features novas ainda não foram mapeadas, mas estas não afetam o funcionamento das atuais.

Hoje eu dei um push das correções pro Github e atualizei o readme para quem quiser usar. O código atualizado pode ser encontrado aqui:
http://github.com/tbueno/delicious-ext/tree/master

Acessando o Orkut com Ruby e Scraping

Se você é brasileiro, provavelmente deve fazer parte do que foi chamado de “WTF Crazy Brazilian Invasion“, lá pelos idos de 2006/2007, ao site de relacionamentos Orkut. Quando assumimos a liderança no número de usuários do Orkut, logo um efeito colateral começou a se manifestar: o excesso de scams, spams e outras filhadaputices tão típicas de brasileiros e países do leste europeu.

Essa ploriferação do mal, fez com que o Google começasse a aprimorar a parte de segurança do site, tornando ele hoje um dos sub-sites do conglomerado mais difíceis de se acessar por vias “automatizadas”.

Mas que tipo de informação seria possível de obter do site?

Acessando o Orkut com Ruby

Uma das medidas adotadas pelo Google para evitar os bots que atazanavam a vida de todos, foi a adoção de chamadas via Ajax, muito mais difíceis de ser capturadas e entendidas. Passei um bom tempo tentando entender o fluxo de dados de login, através do firebug, mas sempre esbarrava em arquivos javascript como esse, obviamente ofuscados de propósito.

Antigamente, alguns já haviam conseguido quebrar o Orkut com Ruby e scraping, mas hoje os mesmos métodos não funcionam mais.

A solução encontrada para evitar as chamadas com Ajax foi acessar o “lado sem javascript” do site, no caso, a interface para dispositívos móveis do site.

Read more…

Extendendo APIs Com Scraping

APIs públicas são uma das coisas mais bacanas da internet, a força propulsora da revolução web 2.0. A possibilidade da criação de mashups através de dados disponibilizados publicamente por sites como Flickr, NYTimes, Digg e outros, nos permite uma possibilidade de combinações limitadas apenas à nossa imaginação. Porém, como nem tudo são flores, nem sempre os sites que disponibilizam seus dados fornecem 100% das funcionalidades oferecidas no próprio site em si. Na verdade, nem deveriam.

Como faríamos para extender as possibilidades fornecidas por estas Apis?

Scraping

De acordo com o Wikipedia:

“Web scraping (or Web harvesting, Web data extraction) is a computer technique of extracting information from websites using specially coded software programs. Usually, such software programs simulate human exploration of the Web by either implementing the low-level Hypertext Transfer Protocol (HTTP), or embedding certain full-fledged Web browsers, such as the Internet Explorer (IE) and the Mozilla Web browser.”

Resumindo de maneira mais técnica, (X)HTML é no fundo XML. Ao navegarmos pelo conteúdo de uma página, podemos extrair informações através de parsing desse conteúdo. Existem diversas ferramentas, tanto de parsing quanto de scraping:

Scraping

  • ScRUBYt
  • Mechanize

Parsing

  • Hpricot
  • Nokogiri
  • REXML

Neste exemplo, utilizarei o Hpricot, por razões pessoais. Nunca parei para avaliar critérios como velocidade, facilidade, etc…

Read more…