[R-br] Selecionar e copiar conteúdo de página usando apenas o terminal linux

Alisson Lucrecio alissonluc em gmail.com
Quarta Abril 30 19:26:40 BRT 2014


Caro Walmes,

Boa noite.

Eu tenho um solução com python. Segue o códigos e o scrip que fiz no
ipython notebook. Depois vc poderia salvar em csv e rodar a estatística com
R.

Att.

##--------------------------------------##---------------------------####--------------------------------------##---------------------------####--------------------------------------##---------------------------##

from ghost import Ghost
from bs4 import BeautifulSoup as bs
import regex
import pandas

page = ghost.open("http://www.whoscored.com/Teams/1232")

soup = bs(ghost.content)

table = soup.find('tbody', { "id" : "team-squad-stats-summary-content" })

players = table.findAll('tr')

data_all = {}
for player in players:
    cols = player.findAll('td')
    data = [col.get_text() for col in cols]
    data_all[data[2]] = data

pandas.DataFrame(data_all).T


012345678910111213141516Biro Biro12Biro BiroAM(L)19164550(1)----160--6.47Bruno
Vieira5Bruno VieiraD(R)28178692-----85.91.5-7.23Carlinhos2CarlinhosD(L)27176
722----181.1117.57Chiquinho17ChiquinhoAM(C)2417069----------Darío Conca6Darío
ConcaM30167582--1-385.9--7.21Diego Cavalieri10Diego CavalieriGK31191862-----
46.2--6.69Diguinho8DiguinhoDM(C)31171702----0.584.71.5-7.14Edwin
Valencia13Edwin
ValenciaM29181850(2)-----81.81-6.31Elivelton9EliveltonD21179812-----74.60.5-
6.86Felipe16FelipeGK2619390----------Fred7FredFW3018575212--375.61.5-7.19Gum
3GumD(C)28189862----0.575.22.517.51Jean11JeanDM(C)27170702----188.6--6.61
Kenedy18KenedyFW1818277----------Rafael Sóbis1Rafael SóbisAM(LR),FW281726722
---3.578.81.5-7.82Rafinha14RafinhaM(R)20177740(1)-----50--6Wagner4Wagner
AM(C)29172712--1-390--7.43Walter15WalterFW24178880(1)-----60--5.95Wellington
Carvalho19Wellington CarvalhoD2118584----------Wellington Silva20Wellington
SilvaD2617764----------

##--------------------------------------##---------------------------####--------------------------------------##---------------------------####--------------------------------------##---------------------------##



2014-04-30 15:32 GMT-03:00 walmes . <walmeszeviani em gmail.com>:

> Saudações,
>
> Preciso ler os dados de uma página mas da forma tradicional, usando XML
> para o exame e retenção dos dados eu não consigo. Os dados são de altura,
> idade, peso, enfim, de jogadores de futebol do campeonato brasileiro. Estão
> disponíveis nessa página, por exemplo, para o Fluminense
>
> *http://www.whoscored.com/Teams/1232 <http://www.whoscored.com/Teams/1232>*
>
> O que me interessa é a tabela com o nome dos jogadores, dados biométricos
> e esportivos. Um selecionar e copiar dessa porção que me interessa traz
> esse conteúdo.
>
> R         Name     Pos     Age     cm     kg     Apps     Goal     A
> Yel     Red     SpG     PS%     AW     MoM     Rt
> 1        Rafael Sóbis    AM(LR),FW    28    172    67    2    2    -
> -    -    3.5    78.8    1.5    -    7.82
> 2        Carlinhos    D(L)    27    176    72    2    -    -    -    -
> 1    81.1    1    1    7.57
> 3        Gum    D(C)    28    189    86    2    -    -    -    -    0.5
> 75.2    2.5    1    7.51
> 4        Wagner    AM(C)    29    172    71    2    -    -    1    -
> 3    90    -    -    7.43
> 5        Bruno Vieira    D(R)    28    178    69    2    -    -    -
> -    -    85.9    1.5    -    7.23
> 6        Darío Conca    M    30    167    58    2    -    -    1    -
> 3    85.9    -    -    7.21
> 7        Fred    FW    30    185    75    2    1    2    -    -    3
> 75.6    1.5    -    7.19
> 8        Diguinho    DM(C)    31    171    70    2    -    -    -    -
> 0.5    84.7    1.5    -    7.14
> 9        Elivelton    D    21    179    81    2    -    -    -    -
> -    74.6    0.5    -    6.86
> 10        Diego Cavalieri    GK    31    191    86    2    -    -    -
> -    -    46.2    -    -    6.69
> 11        Jean    DM(C)    27    170    70    2    -    -    -    -
> 1    88.6    -    -    6.61
> 12        Biro Biro    AM(L)    19    164    55    0(1)    -    -    -
> -    1    60    -    -    6.47
> 13        Edwin Valencia    M    29    181    85    0(2)    -    -    -
> -    -    81.8    1    -    6.31
> 14        Rafinha    M(R)    20    177    74    0(1)    -    -    -
> -    -    50    -    -    6
> 15        Walter    FW    24    178    88    0(1)    -    -    -    -
> -    60    -    -    5.95
> 16        Felipe    GK    26    193    90    -    -    -    -    -    -
> -    -    -    -
> 17        Chiquinho    AM(C)    24    170    69    -    -    -    -
> -    -    -    -    -    -
> 18        Kenedy    FW    18    182    77    -    -    -    -    -    -
> -    -    -    -
> 19        Wellington Carvalho    D    21    185    84    -    -    -
> -    -    -    -    -    -    -
> 20        Wellington Silva    D    26    177    64    -    -    -    -
> -    -    -    -    -    -
>
> Quando eu peço o código fonte da página (acesso pelo botão direito do
> mouse no navegador firefox), não aparecem esses valores lá. Se aparecessem
> dava para usar o XML. Pelo jeito os dados são trazidos por uma consulta à
> uma base de dados on the fly para colocar na página. A única forma que eu
> sei de pegar é copiando para área de transferência.
>
> Eu tenho feito assim:
> 1. Abro a página de cada time no navegador e dou ctrol+a para selecionar
> todo o conteúdo;
> 2. Dou ctrol+c para copiar o conteúdo para área de transferência;
> 3. Dou control+v dentro de um arquivo texto;
> 4. Leio o arquivo texto no R, elimino a sujeira, organizo em colunas até
> chegar um data.frame.
>
> O que eu quero é substituir passos gráficos de 1 à 3 por algum comando do
> teminal linux que pudesse pegar a URL que eu passar e salvar o conteúdo em
> um aquivo que eu der o nome. Com isso elimino intervenção humana e
> rapidamente baixo todos os times, de todos os torneios para ter excelentes
> dados para trabalhar em aula. Se alguém se interessar, os dados da liga
> européia (56 times) que peguei no braço estão em
>
> *http://www.leg.ufpr.br/~walmes/data/euro_football_players.txt
> <http://www.leg.ufpr.br/~walmes/data/euro_football_players.txt>*
>
> Dei umas googladas e vi alguns comandos que, infelizmente, ainda não
> trazem o que eu preciso, como
>
> *sudo apt-get install lynx*
> *lynx -dump http://www.whoscored.com/Teams/1232
> <http://www.whoscored.com/Teams/1232>*
>
> O recorte do resultado do comando está abaixo.
>
>    View:
>           [41]Overall
>           [42]Home
>           [43]Away
>
>    R Name Pos Age cm kg Apps Goal A Yel Red SpG PS% AW MoM Rt
> <------ a tabela que eu queria era pra estar
>    *Players shaded are players who are not currently active in team.
> <------ entre essas duas linhas, mas não.
>    (Loaned, sold, etc..)
>
>    Tournaments:
>           [44]Brasileirão
>
>    View:
>           [45]Overall
>           [46]Home
>           [47]Away
>
> Caso alguém tenha algum caminho a apontar, fico grato.
> Walmes.
>
> ==========================================================================
> Walmes Marques Zeviani
> LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
> Departamento de Estatística - Universidade Federal do Paraná
> fone: (+55) 41 3361 3573
> skype: walmeszeviani
> homepage: http://www.leg.ufpr.br/~walmes
> linux user number: 531218
> ==========================================================================
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>



-- 
Alisson Lucrecio da Costa
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140430/ac2576d2/attachment.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: Walmes.ipynb
Tipo: application/octet-stream
Tamanho: 19748 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140430/ac2576d2/attachment.obj>


Mais detalhes sobre a lista de discussão R-br