Criar gráficos, estatística da "Google-Scholar" usando wget

Publicado por Iago Lira (última atualização em 16/10/2017)

[ Hits: 3.774 ]

Homepage: https://notabug.org/iagolira/

Download 6714.scholar-search.sh




Você que é pesquisador já tentou gerar um gráfico do número de publicações vs data etc, mas ficou limitado por ferramentas pagas de terceiros?

Seus problemas acabaram! Esse script gera um gráfico do número de publicações de determinado assunto pelo ano de publicação.  No futuro irei implementar mais funcionalidades, mas você está livre para pegar o script e melhorá-lo.

Observações:

Quando executei o script pela primeira vez, este funcionou de boa, mas quando executei várias vezes seguidas o "wget" retornou o erro 302. Consegui superar esse erro fazendo o seguinte:

1) Editar o arquivo: nano ~/.wgetrc;

2) Inserir o seguinte conteúdo em ~/.wgetrc:

header=authority:scholar.google.com
header=method:GET
header=scheme:https
header=accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
header=accept-language:pt-BR,pt;q=0.8,en;q=0.6,fr;q=0.4,gl;q=0.2,am;q=0.2,el;q=0.2,he;q=0.2
header=cache-control:max-age=0
header=cookie:SID=JgUiFjPvG5tQOvfOPhEOSBGIgINeH92h6SeG9xgOXSK-7ob0-LqpYrfnzJ4RR-eXwbqxzA.; HSID=AJixidx0AB6RcyN2E; SSID=A5UZreCHfbfZQL6a$
header=dnt:1
header=upgrade-insecure-requests:1
header=user-agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36
header=x-chrome-uma-enabled:1
header=x-client-data:CJG2yQEIo7bJAQj6nMoBCKmdygEI0p3KAQ==

3) Ctrl+o (para salvar) e Ctrl+x (para sair do editor);

4) Pronto, agora é só executar o script e ser feliz.

Você deve está curioso de onde tirei o conteúdo inserido no "~/.wgetrc", né? Pois bem, para saber fazer com outros sites é só entrar pelo google chrome, acessar a página e pressionar a tecla F12, clicar em network, pressionar F5 e clicar num dos links. Por último, vá até "Request Headers" e compare com o conteúdo inserido em "~/.wgetrc".  Ia esquendo, não precisa inserir "referer" em "~/.wgetrc", já fiz isso no script. Não irei me aprofundar nisso.

Espero que gostem.

  



Esconder código-fonte

#+---------------------------------------+
#|Programa: scholar-search               |
#|Autor: Francisco Iago Lira Passos      |
#|Função: Pesquisar e fazer estatísticas |
#|        das mesma usando o mecanismo   |
#|        da Google Search               |
#|Data: 10-09-2017                       |
#+---------------------------------------+
#!/bin/bash
export object=$1
export ylo=$2
export yhi=$3

function capture (){
     name=$(echo $object | sed 's/+/-/g')
     echo '' > grafico-$name-pubsVsAnos.dat
     for (( i=$ylo; i<=$yhi; i++ ))
     do 
        rm -f scholar?q=*
        link="https://scholar.google.com/scholar?q=$object&hl=en&as_sdt=0%2C5&as_ylo=$i&as_yhi=$i"
        sublink="/scholar?q=$object&hl=en&as_sdt=0%2C5&as_ylo=$i&as_yhi=$i"
        wget $link --referer=$link
        filename="scholar?q=$object&hl=en&as_sdt=0%2C5&as_ylo=$i&as_yhi=$i"
        pubs=`cat $filename | sed 's/About/\n/g' | sed '/results/!d; s/results.*//g; s/ \|,//g'`
        clear
        echo $i"    "$pubs >> grafico-$name-pubsVsAnos.dat
     done
     exit 0
}

if [ "$1" == "" ] || [ "$2" == "" ] || [ "$3" == "" ]; then
clear
echo "
     +--------------------------------------------------+
     |    Para ter uma boa experiência com o script     |
     |    Recomendamos que siga conforme o exemplo:     |
     |==================================================|
     | ./scholar-search.sh forensic+computing 1991 2017 |
     | ./scholar-search.sh carbon+nanotubes 1991 2017   |
     |==================================================|
     |       Obs: Não esqueça de separar com '+'!       |
     +--------------------------------------------------+"
else
     capture
fi

Scripts recomendados

Firewall iptables

Instalador de programas

Agenda desenvolvida em Shell Script

Backup LDAP

Liberação do servidor DNS no firewall


  

Comentários
[1] Comentário enviado por hugoeustaquio em 17/10/2017 - 00:21h

Olá, gostei do seu script.
Fiz algumas modificações. Primeiro eu não escrevi as configurações de cabeçalho da requisição no meu ~/.wgetrc. Ao invés disso, as gravei em um arquivo chamado 'config' no mesmo diretório do script. Na linha 21 (a do comando wget) adicionei o conteúdo "-- config config", que faz com que o comando wget leia as configurações de cabeçalho não do wget (isso prejudicaria outros scripts usando wget) mas apenas o arquivo 'config' local.

Caso queira mais colaborações, poderia postar esse projeto no github?

Obrigado camarada!

[2] Comentário enviado por iagolira em 03/12/2017 - 12:42h

A conteúdo de cookies "header=cookie:SID=JgUiFjPvG5tQOvfOPhEOSBGIgINeH92h6SeG9xgOXSK-7ob0-LqpYrfnzJ4RR-eXwbqxzA.; HSID=AJixidx0AB6RcyN2E; SSID=A5UZreCHfbfZQL6a$" deve ser trocada toda vez que aparecer o erro 302. Para isso, basta clicar em F12->Network->All->F5->Request Headers, e depois copiar os cookies e colar na frente de "header=".

Nome: Francisco Iago Lira Passos
Curso: Mestrando em Física


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts