Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/23: Рейтинг темы: голосов - 23, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27

Парсинг Betgames результатов в Parimatch

02.06.2022, 17:07. Показов 5654. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую Вас дорогие питонисты. Появилась идея создания бота для парсинга результатов на игры от betgames, конкретно для игры в кости. Нужно брать результаты игр, обрабатывать их под нужные мне параметры, а именно чтобы бот давал сигнал что та или иная кость одержала победу 7 раз подряд или то что определенного тотала не было столько то раз или ничья не выпадала 30 раз и прочее, данные как я понял отдаются в json (если я не ошибаюсь), данные боты уже есть, но я бы хотел реализовать свой, требуется помощь)

https://parimatch.betgames.tv/... timezone=3

вот ссылка где видны данные которые мне нужны взял её "поковырявшись" в коде страницы о вкладке network, отсюда мне нужны только цвет и номер соответственно
Миниатюры
Парсинг Betgames результатов в Parimatch  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.06.2022, 17:07
Ответы с готовыми решениями:

PHP парсинг результатов Json
Приветствую, помогите пожалуйста разобраться с с таким вот приколом: выполняю обращение к Zabbix API таким вот образом: <?php ...

Парсинг результатов выдачи яндекса
Люди. Поможите. Нужно пропарсить результат выдачи яндекса. Делаю на php использовал file_get_contents(),fopen(), но результат...

Парсинг сайта и запись результатов в файл
Здравствуйте. Можно ли написать такую программу которая поиском найдет этот кусок текста, и сохранит этот текст в txt файл? Так...

51
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
13.06.2022, 02:32  [ТС]
Студворк — интернет-сервис помощи студентам
Jabbson, так если я правильно понял то мне нужно прописать в ряд 7 строчек(так как мне нужно семь побед) и в них руками показать где True and False чтобы программа понимала где победа синей где победа красной и делать проверку?
и получается что ровно так же нужно прописать 30 строк и указать где ничья и эти 30 строчек у меня так в коде и останутся получается и просто последний элемент будет выдавливаться и перезаписываться? я правильно всё понял?) или я совсем уже поплыл)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
13.06.2022, 02:36
Цитата Сообщение от Ruslan_Puplikov Посмотреть сообщение
прописать в ряд 7 строчек
я не совсем уверен, что Вы имеете ввиду под этим

Цитата Сообщение от Ruslan_Puplikov Посмотреть сообщение
в них руками показать где True and False чтобы программа понимала где победа синей где победа красной и делать проверку
руками ничего делать не нужно, все должно автоматически браться с сайта

Цитата Сообщение от Ruslan_Puplikov Посмотреть сообщение
последний элемент будет выдавливаться и перезаписываться
это так, FIFO очередь с размером, все верно
1
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
13.06.2022, 03:59  [ТС]
Jabbson,

q = deque(maxlen=30)

q.append(False)
q.append(False)
q.append(True) # ничья
q.append(False)
q.append(False)
print(q)

если maxlen 30 то и строк должно быть 30 или я не понял ?)


и затем такой же код только из 7ми строк под победу той или иной кости? только пометить False например где синяя кость и True где красня или как?) я просто ну вообще не понимаю этого, почитал в интернете и всё равно пока что не понял ничего, кроме того что это быстрый способ)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
13.06.2022, 04:02
Вы получите лист значений со страницы, занесете их все сразу в очередь, не нужно по одному.
1
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
13.06.2022, 16:50  [ТС]
Jabbson, так просто теперь я запустался ахах то есть будет один maxlen (30) для ничьей, второй maxlen (7) для выигрыша одной из костей, тут я понял, но вот как это все прописать то, я не понимаю как код понимает где ставить False а где True ахах

from collections import deque

q = deque(maxlen=30)

q.append(False)
q.append(False)
q.append(False)
q.append(False)
q.append(False)
print(q)

print(True in q)

q = deque(maxlen=7)

q.append(False)
q.append(False)
q.append(False)
q.append(False)
q.append(False)
print(q)

print(True in q)


ну то есть в моей голове сейчас примерно вот такая вот картина, в чем я крайне сомневаюсь)) явно тут чего то не хватает или написан очевидный бред)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
13.06.2022, 16:52
из парсинга страницы, прочитал страницу - посмотрел значения, если ничья - значит одно, если чья - значит другое.
0
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
13.06.2022, 17:02  [ТС]
Jabbson, да просто я понимаю что информация берется из парсинга страницы, но как сам код понимает какой параметр я закладываю в этот код если я там только написал q = deque(maxlen=30) как он может понимать какой критерий отбора я сюда закладываю) если вы говорите что ничего самому писать не нужно что всё автоматически) то есть я не понимаю что писать после этой строчки, а именно я не могу понять откуда берутся вот эти строки "критерии" :

q.append(False)
q.append(False)
q.append(False) # вот эти строки "критерии" откуда они берутся и как код автоматически выбирает где False а где True
поставить не зная мои критерии(так как я не понял где прописывать или указывать эти критерии)
q.append(False)
q.append(False)
print(q)

print(True in q)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
13.06.2022, 17:20
Лучший ответ Сообщение было отмечено Ruslan_Puplikov как решение

Решение

откуда берется True and False. Вот пример.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from collections import deque
import requests
from bs4 import BeautifulSoup
 
url = 'https://htmlcolorcodes.com/color-names/'
 
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
 
colors = soup.select('td.color-table__cell--name')
 
q = deque(maxlen=10)
 
for c in colors:
    q.append('red' in c.text.lower())
 
print(q)
print(True in q)
проходим по всем цветам на странице, для каждого цвета в очередь добавляем значение по формуле
'red' in c.text.lower()

то есть тру если red присутствует в названии цвета.

дальше выводит значения (последние 10, потому что длина очереди 10), а также выводим есть ли в очереди значения True (red присутствует).

Добавлено через 47 секунд
вывод

Code
1
2
deque([False, False, False, False, False, False, False, False, False, False], maxlen=10)
False
то есть среди последних 10 цветов нет ни одного, а названии которого было бы слово Red.
1
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
13.06.2022, 19:05  [ТС]
Jabbson, очень доходчиво) просто вот как раз q.append('red' in c.text.lower()) этот кусочек кода всё расставил по своим местам) я надеюсь у меня срослось) только теперь вопрос в том что мне ведь чтобы обозначить ничью нужно как то из 'number' вытащить первую цифру и вторую и далее их как то сравнить, вот это я не понимаю как сделать
Миниатюры
Парсинг Betgames результатов в Parimatch  
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
13.06.2022, 19:15
Python
1
2
3
4
5
6
7
8
9
10
11
12
import requests
 
url = 'https://parimatch.betgames.tv/s/web/v1/game/results/parimatchby?game_id=10&page=1&date=2022-05-25&timezone=3'
 
page = requests.get(url)
j = page.json()
 
for x in j['runs']:
    n1 = x['results'][0]['number']
    n2 = x['results'][1]['number']
    # print(n1 == n2)
    print(f'{n1} == {n2} --> {n1 == n2}')
1
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
13.06.2022, 23:40  [ТС]
Jabbson, я разобрался с deque все работает, но работает только когда я беру параметр maxlen(30), почему то когда я беру maxlen(7) оно берет числа как будто с конца списка

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
q = deque(maxlen=30)  # НИЧЬЕЙ НЕ БЫЛО 30 РАЗ
for x in j['runs']:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    q.append(dice1 == dice2)
print(q)
print(True in q)
 
print()
 
q = deque(maxlen=7) # КРАСНАЯ КОСТЬ НЕ ПОБЕЖДАЛА 7 РАЗ
for x in j['runs']:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    q.append(dice1 > dice2)
print(q)
print(True in q)
а когда ставлю вместо maxlen(7) ставлю maxlen(30) то все работает, в чем может быть причина?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
14.06.2022, 00:18
Цитата Сообщение от Ruslan_Puplikov Посмотреть сообщение
оно берет числа как будто с конца списка
в этом же вся идея была - что последние 7 подряд игр, красная кость не побеждала или что-то вроде этого, или я что-то не понял?
0
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
14.06.2022, 08:08  [ТС]
Jabbson, ну оно имелось в веду что да, последние 7 игр, но последние не из конца списка, а в принципе, в общем оно как будто брало их отсюда, а тут мне уже смысла нету брать, так как мне нужно чтобы вот то что сейчас именно играет, что бы ставить что кость выиграет на 8 или 10 раз например
Миниатюры
Парсинг Betgames результатов в Parimatch  
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
14.06.2022, 16:12
а последние игры и последние в списке - это не одно и то же? Где те, которые сейчас играют?
1
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
14.06.2022, 16:38  [ТС]
Jabbson, вот когда беру 30 то берется весь список целиком, а кода беру 7, то берется снизу самого, а мне нужно чтобы сверху брались значения


вот такой код у меня вышел


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import requests
from collections import deque
from datetime import date
today = date.today()
 
url = (f'https://parimatch.betgames.tv/s/web/v1/game/results/parimatchby?game_id=10&page=1&date={today}&timezone=3')
 
page = requests.get(url)
j = page.json()
 
for x in j['runs']:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    if dice1 == dice2:
        print('НИЧЬЯ')
    elif dice1 > dice2:
        print('КРАСНАЯ победила')
    elif dice1 < dice2:
        print('СИНЯЯ победила')
 
 
 
 
q = deque(maxlen=30)  # НИЧЬЕЙ НЕ БЫЛО 30 РАЗ
for x in j['runs']:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    q.append(dice1 == dice2)
if deque == False:
    print('Ничье не было 30 раз')
print(q)
print(True in q)
 
print()
 
q = deque(maxlen=7) # КРАСНАЯ КОСТЬ НЕ ПОБЕЖДАЛА 7 РАЗ
for x in j['runs']:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    q.append(dice1 > dice2)
if deque == False:
    print('КРАСНАЯ кость не побеждала 7 раз')
print(q)
print(True in q)
Миниатюры
Парсинг Betgames результатов в Parimatch  
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
14.06.2022, 16:45
Аааа, если нужно просто сверху, а не снизу брать, то можно
а) читать не все значения, а именно столько, сколько нужно (то есть остановиться после прочтения нужного кол-ва значений)
б) прежде, чем записывать значения в очередь, перевернуть список значений.

я бы выбрал а)
1
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
14.06.2022, 17:07  [ТС]
Jabbson, я бы тоже предпочел пункт a), только теперь сразу вопрос как его реализовать, просто мне нужно одновременно и читать все значения для отсутствия ничьей 30 раз подряд, затем чтобы алгоритс искал присутствие победы 7 раз подряд одной из кости и ещё тоталы будут и это всё одновременно должно работать и в случае положительного результата давать сигнал в тг бот) как то так)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
14.06.2022, 18:45
У вас есть список 30 последних игр (с той последней страницы), взять из листа все значения или 7 - срезами очень быстро.
Ну понятие одновременности - оно растяжимое. техническая сложность вычислений, которые вы делаете - весьма низкая, поэтому про производительность я бы не переживал, самое долгое во всем этом это получить данные с сайта, все остальное произойдет ОЧЕНЬ быстро.
1
0 / 0 / 0
Регистрация: 31.05.2022
Сообщений: 27
16.06.2022, 15:17  [ТС]
Jabbson, вот у меня получился такой код, подскажите, он работоспособен, я всё верно прописал?) просто не могу понять выдаст ли он сообщение при общем deque равно True, если я все правильно понял как с этим работать)

Python
1
2
3
4
5
6
7
8
q = deque(maxlen=30) # КРАСНАЯ КОСТЬ НЕ ПОБЕЖДАЛА 7 РАЗ, синяя кость == True
for x in j['runs'][:7]:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    q.append(dice1 < dice2)
    if deque == True:
        print("КРАСНАЯ КОСТЬ НЕ ПОБЕЖДАЛА 7 РАЗ")
print(q)
Добавлено через 46 минут
Jabbson, и ещё сразу тогда вопрос, как мне сделать так, чтобы этот весь процесс выполнялся каждые 30 секунд) ну и тогда сразу вот весь код)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import requests
from collections import deque
from datetime import date
today = date.today()
 
url = (f'https://parimatch.betgames.tv/s/web/v1/game/results/parimatchby?game_id=10&page=1&date={today}&timezone=3')
 
page = requests.get(url)
j = page.json()
 
for x in j['runs']:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    if dice1 == dice2:
        print('НИЧЬЯ')
    elif dice1 > dice2:
        print('КРАСНАЯ победила')
    elif dice1 < dice2:
        print('СИНЯЯ победила')
 
 
print()
 
q = deque(maxlen=30)  # НИЧЬЕЙ НЕ БЫЛО 30 РАЗ
for x in j['runs']:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    q.append(dice1 == dice2)
    if deque == True:
        print("НИЧЬЕЙ НЕ БЫЛО 30 РАЗ")
print(q)
 
 
print()
 
q = deque(maxlen=30) # СИНЯЯ КОСТЬ НЕ ПОБЕЖДАЛА 7 РАЗ, красная кость == True
for x in j['runs'][:7]:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    q.append(dice1 > dice2)
    if deque == True:
        print("СИНЯЯ КОСТЬ НЕ ПОБЕЖДАЛА 7 РАЗ")
print(q)
 
 
print()
 
q = deque(maxlen=30) # КРАСНАЯ КОСТЬ НЕ ПОБЕЖДАЛА 7 РАЗ, синяя кость == True
for x in j['runs'][:7]:
    dice1 = x['results'][0]['number']
    dice2 = x['results'][1]['number']
    q.append(dice1 < dice2)
    if deque == True:
        print("КРАСНАЯ КОСТЬ НЕ ПОБЕЖДАЛА 7 РАЗ")
print(q)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
16.06.2022, 16:48
вот так еще можно, выполняется в бесконечном цикле с засыпанием на 30 секунд

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from datetime import datetime
import operator
from time import sleep
import requests
 
 
def check(runs, l, op):
    res = all(op(x['results'][0]['number'], x['results'][1]['number']) for x in runs[:l])
    if res:
        # <do something>
        print(res)
    return res
 
while True:
    dt = datetime.now()
    url = f'https://parimatch.betgames.tv/s/web/v1/game/results/parimatchby?game_id=10&page=1&date={dt.date()}&timezone=3'
 
    page = requests.get(url)
    r = page.json()['runs']
 
    print('='*10, dt.time(), '='*10)
    print('30 games, no draw:', check(r, 30, operator.ne))
    print(' 7 games, no continuous red wins:', check(r, 7, operator.lt))
    print(' 7 games, no continuous blue wins:', check(r, 7, operator.gt))
 
    sleep(30)
только с lt, gt подумайте, я не вникал в логику, но скорее всего наоборот
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.06.2022, 16:48
Помогаю со студенческими работами здесь

Парсинг результатов поиска Yandex,Google и HttpWebRequest
Привет! Возникла проблема. Не получается спарсить страничку в поисковой системе средствами HttpWebRequest или другими....

Парсинг таблиц с сайта и запись результатов в файл
Есть код Imports System.Text.RegularExpressions Imports System Imports System.IO Imports System.Text Public Class Form1 ...

Парсинг HTML станицы по URL и добавление результатов в список
Здравствуйте! Создав свой форум, и настроив его как нужно, я понял, что мне не хватает приложения форума. Не просто окно с WebView, а...

Составить программу для поиска в интерне, используя Google и последующий парсинг результатов
вообщем идея такова!нуждаюсь в совете может быть в исходниках наработанных по данному вопросу.хочу составить программу для поиска в интерне...

при переходе по нужным ссылкам открываются другие рекламные страницы. типа start.parimatch.com
Здравствуйте, нужна помощь. при переходе по нужным ссылкам открываются другие рекламные страницы. типа start.parimatch.com


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru