Autor Tópico: Diário: Machine Learning - Desenvolvendo Algorítimo para Betfair Exchange  (Lida 7108 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

SOMA247

  • Devedor
  • Estado:
    Offline
  • Registo: Mar 2019
  • Localidade:
  • Mensagens:
    128
  • Nacionalidade: br
  • Pts Tipsr:
    0
Diário Dia 141
29 de Julho  de 2019

Estava pegando todos os links e dados iniciais da temporada 18/19 da Bundesliga mas depois de uns 50 jogos o site BetsAPI bloqueou meu IP.



Quando o projeto estiver funcionando pretendo pagar pelos dados, mas como ainda estou na fase de testes vou utilizar a  lista de proxys grátis. Demorou mas raspei tudo  :cool:



Próximo passo seré pegar os gráficos SofaScore, ODDS ao vivo e gráficos de posse de bola e ataque.
« Última modificação: 29 de Julho de 2019, 15:46 por SOMA247 »



3monkeys

  • Bilionário
  • ?
  • Estado:
    Offline
  • Registo: Jan 2010
  • Localidade:
  • Mensagens:
    2184
    Pts Tipsr:
    24
Este pedaço de código é espetacular e devia ser suficiente para ultrapassar qualquer limitação.

(...)

res = requests.get('https://free-proxy-list.net/', headers={'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(res.text,"lxml")
proxies = set()
for items in soup.select("tbody tr"):
    proxy = ':'.join([item.text for item in items.select("td")[:2]])
    proxies.add(proxy)
    print(proxy)   

proxy_pool = cycle(proxies)

(...)

---

Estava pegando todos os links e dados iniciais da temporada 18/19 da Bundesliga mas depois de uns 50 jogos o site BetsAPI bloqueou meu IP.

Portanto ao jogo 51 devias mudar de IP, certo?
Ou, mesmo fazendo isso, bloqueou?



SOMA247

  • Devedor
  • Estado:
    Offline
  • Registo: Mar 2019
  • Localidade:
  • Mensagens:
    128
  • Nacionalidade: br
  • Pts Tipsr:
    0
Este pedaço de código é espetacular e devia ser suficiente para ultrapassar qualquer limitação.

(...)

res = requests.get('https://free-proxy-list.net/', headers={'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(res.text,"lxml")
proxies = set()
for items in soup.select("tbody tr"):
    proxy = ':'.join([item.text for item in items.select("td")[:2]])
    proxies.add(proxy)
    print(proxy)   

proxy_pool = cycle(proxies)

(...)

---
Portanto ao jogo 51 devias mudar de IP, certo?
Ou, mesmo fazendo isso, bloqueou?

Oi 3monkeys, minha primeira tentativa foi sem proxy, com meu IP de verdade utilizando intervalo de tempo entre as requisições, ainda tive o cuidado de criar intervalos randômicos  entre 3 e 6 segundos pra não ficar muito obvio. Mas não teve jeito, depois de uns 50 requests foi bloqueado.

Então fui pra lista de proxies, e como alegria de pobre dura pouco parece que arrebentei com os proxies free kkkkkkk. Depois de pegar algumas ligas parou de funcionar, então fui atrás dos erros, fiz as requisições e pegava os erros detalhados. E foi isso mesmo, bloquearam os IPs da lista free.

Mas  a gente é BR e não desiste, pesquisei um pouco e encontrei um código que testa os IPs antes de adicionar na lista que iremos utilizar, funciounou mas também deve dar problema logo logo. Não vai ter como continuar com esse briga, vou acabar assinando o BetsAPI.

Imagem: novo sistema de proxies fazendo scraping no BetsAPI


Estou deixando o link pra download dos dados iniciais da Bundesliga 18/19 (306 jogos), são apenas infos informações básicas formato excel (.csv).
https://drive.google.com/file/d/1YDQQh1_1v6Oqogp04oARZJVNLuVqkxXZ/view?usp=sharing








Forum de Apostas

Re: Diário: Machine Learning - Desenvolvendo Algorítimo para Betfair Exchange
« Responder #152 em: 30 de Julho de 2019, 00:23 »

SOMA247

  • Devedor
  • Estado:
    Offline
  • Registo: Mar 2019
  • Localidade:
  • Mensagens:
    128
  • Nacionalidade: br
  • Pts Tipsr:
    0
Link do artigo que utilizei para conseguir os novos proxies.
https://codelike.pro/create-a-crawler-with-rotating-ip-proxy-in-python/




Codigo13

  • Milionário
  • Estado:
    Offline
  • Registo: Fev 2010
  • Localidade: São Paulo
  • Mensagens:
    1749
  • Nacionalidade: br
  • Pts Tipsr:
    16
É isso ai. Já consegui gerar os primeiros produtos.
O bom que há um API, pago para ser usado. Caso contrário teria que utilizar os serviços de proxies que podem ser mais caros e mais complicados de utilizar
10 Campeonatos Brasileiros
3 Copas do Brasil

Maior campeão do Brasil, Verdão Querido!
#verdeécordainveja



SOMA247

  • Devedor
  • Estado:
    Offline
  • Registo: Mar 2019
  • Localidade:
  • Mensagens:
    128
  • Nacionalidade: br
  • Pts Tipsr:
    0
Diário Dia 143
31 de Julho  de 2019

Terminei de pegar todos os dados da BetsAPI:
- Detalhes dos Jogos,
- Odds pré live
- Odds Live,
- Gráficos minuto a minuto:
          Ataques
          Remates
          Posse de bola

Consegui um sistema que não utiliza proxies ou qualquer coisa do tipo, foi só ajustar o tempo das requisições e utilizar o Selenium. Peguei todos os gráficos e odds ao vivo e não fui bloqueado nenhuma vez.



Nos próximos dias vou pegar os gráficos do SofaScore e linkar cada um com seu jogo correspondente na minha base de dados.



SOMA247

  • Devedor
  • Estado:
    Offline
  • Registo: Mar 2019
  • Localidade:
  • Mensagens:
    128
  • Nacionalidade: br
  • Pts Tipsr:
    0
Diário Dia 145
02 de Agosto  de 2019



Consegui pegar todos os dados necessários para os estudos iniciais, esta tudo organizado e funcionando. Quando a gente desenvolve um sistema como esse tem tanto recurso legal que podemos adicionar que é perigoso não conseguirmos caminhar. Neste primeiro momento  deixei de lado alguns dados que acho importante para a versão funcional:

- Localização dos remates
- Gols esperados xG (pré-live)
- Valor como mandante / taxa ocupação estádio / pressão torcida
- Módulo que classifica os jogadores (capacidade e valor de mercado)
- Perfil do treinador

Vou deixar o código que desenvolvi para pegar o link dos gráficos SofaScore.

-----------------------------------------------------------------------------------------

from selenium import webdriver
from random import randint
from json import loads

# Inicia Sistema
driver = webdriver.Chrome('chromedriver.exe')

# Cria listas
graf_home = []
graf_away = [] 
graf_link = []
graf_rodada = []

# Número de rodadas da liga
rodadas = 34

# Faz o loop adicionando as rodadas a URL
for w in range(1, rodadas + 1):
   
    url = 'https://www.sofascore.com/u-tournament/35/season/17597/matches/round/25' + str(w)
    driver.get(url)
    json_content = driver.find_element_by_css_selector('body > pre').text
    data = loads(json_content)
   
    print(url)
    sleep(randint(3, 7))
   
    for v in data['roundMatches']['tournaments'][0]['events']:
        temp = 'https://www.sofascore.com/event/' + str(v['id']) + '/json'
        graf_link.append(temp)
        graf_home.append(v['homeTeam']['name'])
        graf_away.append(v['awayTeam']['name'])
        graf_rodada.append(w)
       
    sleep(randint(3, 7))

# Exportando dados .csv 
import pandas as pd
att_m = pd.DataFrame({'Rodada': graf_rodada,'Home': graf_home, 'Away': graf_away, 'ID': graf_link})
export = att_m.to_csv (r'links_sofascore_bundesliga_18_19.csv', index = None, header = True)

-----------------------------------------------------------------------------------------




Codigo13

  • Milionário
  • Estado:
    Offline
  • Registo: Fev 2010
  • Localidade: São Paulo
  • Mensagens:
    1749
  • Nacionalidade: br
  • Pts Tipsr:
    16

Consegui pegar todos os dados necessários para os estudos iniciais, esta tudo organizado e funcionando. Quando a gente desenvolve um sistema como esse tem tanto recurso legal que podemos

 :venia: :venia: :venia: :venia:
10 Campeonatos Brasileiros
3 Copas do Brasil

Maior campeão do Brasil, Verdão Querido!
#verdeécordainveja



Forum de Apostas

Re: Diário: Machine Learning - Desenvolvendo Algorítimo para Betfair Exchange
« Responder #157 em: 03 de Agosto de 2019, 16:17 »

3monkeys

  • Bilionário
  • ?
  • Estado:
    Offline
  • Registo: Jan 2010
  • Localidade:
  • Mensagens:
    2184
    Pts Tipsr:
    24
Também ando a extrair informação do sofascore.

Mas isto de extrair dados apresenta alguns desafios.
Primeiro é o limite de pedidos que alguns sites impõem.
Depois, muitos destes sites apresentam estatísticas detalhadas apenas para algumas ligas.
E por último os critérios de um site na contabilização de por exemplo, remates à baliza, podem ser diferentes de outros sites tornando assim as bases de dados incompatíveis.

Conseguir uma base de dados com um tamanho decente para criar um modelo, não é fácil.



SOMA247

  • Devedor
  • Estado:
    Offline
  • Registo: Mar 2019
  • Localidade:
  • Mensagens:
    128
  • Nacionalidade: br
  • Pts Tipsr:
    0
Nos últimos dias não consegui trabalhar no projeto, com a volta dos campeonatos europeus preciso focar no trade. Também fiquei um pouco cansado de estudar os códigos, vou dar um tempo mas acho que em breve volto.




 


Casas de Apostas: bet pt / Betclic / ESC Online / Nossa Aposta / Casino Portugal

Rede Apostaganha: Apostas / Palpites e Dicas de Apostas / Pronósticos de Apuestas / Betting Tips and Predictions