'How to import data from a HTML table on a website to excel?

I would like to do some statistical analysis with Python on the live casino game called Crazy Time from Evolution Gaming. There is a website that has the data to do this: https://tracksino.com/crazytime. I want the data of the lowest table 'Spin History' to be imported into excel. However, I do not now how this can be done. Could anyone give me an idea where to start?

Thanks in advance!



Solution 1:[1]

Try the below code:

    import json
    import requests
    from urllib3.exceptions import InsecureRequestWarning
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    import csv
    import datetime

    def scrap_history():
      
    csv_headers = [] 
    file_path = '' #mention your system where you have to save the file
    file_name = 'spin_history.csv' # filename
    page_number = 1

    while True:
        #Dynamic URL fetching data in chunks of 100
        url = 'https://api.tracksino.com/crazytime_history?filter=&sort_by=&sort_desc=false&page_num=' + str(page_number) + '&per_page=100&period=24hours'
        print('-' * 100)
        print('URL created : ',url)
        response = requests.get(url,verify=False)
        result = json.loads(response.text) # loading data to convert in JSON.
        history_data = result['data']
        print(history_data)

        if history_data != []:
            with open(file_path + file_name ,'a+') as history:
                #Headers for file
                csv_headers = ['Occured At','Slot Result','Spin Result','Total Winners','Total Payout',]
                csvwriter = csv.DictWriter(history, delimiter=',', lineterminator='\n',fieldnames=csv_headers)
                if page_number == 1:
                    print('Writing CSV header now...')
                    csvwriter.writeheader()
                
                #write exracted data in to csv file one by one
                for item in history_data:
                    value = datetime.datetime.fromtimestamp(item['when'])
                    occured_at = f'{value:%d-%B-%Y @ %H:%M:%S}'
                    csvwriter.writerow({'Occured At':occured_at,
                                            'Slot Result': item['slot_result'],
                                            'Spin Result': item['result'],
                                            'Total Winners': item['total_winners'],
                                            'Total Payout': item['total_payout'],                                                    
                                          })
                
            print('-' * 100)
            page_number +=1
            print(page_number)
            print('-' * 100)
        else:
            break

Explanation: I have implemented the above script using python requests way. The API url https://api.tracksino.com/crazytime_history?filter=&sort_by=&sort_desc=false&page_num=1&per_page=50&period=24hours extarcted from the web site itself(refer screenshot). In the very first step script will take the dynamic URL where page number is dynamic and changed upon on every iteration. For ex:- first it will be page_num = 1 then page_num = 2 and so on till all the data will get extracted.

API URL

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Vin