[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