Data crawling from https://vietlott.vn/, results for products:
These are backtest results for the strategies I have tested (just the abstract method at the moment, you can't predict lotery lol)
predicted: 20 / day (20 tickets perday or 200,000 vnd) predicted corrected:
date | result | predicted |
---|
date | id | result | page | process_time |
---|---|---|---|---|
2025-03-01 | 01158 | [15, 17, 34, 37, 39, 45, 41] | 0 | 2025-03-01 19:00:19.333042 |
2025-02-27 | 01157 | [5, 9, 21, 31, 43, 53, 11] | 0 | 2025-02-27 22:55:20.424084 |
2025-02-25 | 01156 | [1, 7, 11, 24, 29, 30, 48] | 0 | 2025-02-25 20:58:27.007819 |
2025-02-22 | 01155 | [1, 2, 7, 22, 23, 46, 50] | 0 | 2025-02-22 19:00:38.011886 |
2025-02-20 | 01154 | [13, 17, 20, 27, 36, 54, 47] | 0 | 2025-02-20 19:00:12.840993 |
2025-02-18 | 01153 | [12, 13, 30, 38, 40, 47, 42] | 0 | 2025-02-19 19:00:18.391949 |
2025-02-15 | 01152 | [22, 37, 38, 47, 51, 55, 31] | 0 | 2025-02-15 19:00:15.907100 |
2025-02-13 | 01151 | [2, 8, 23, 26, 42, 47, 7] | 0 | 2025-02-13 19:00:13.398152 |
2025-02-11 | 01150 | [1, 9, 18, 21, 35, 40, 44] | 0 | 2025-02-11 19:00:16.958421 |
2025-02-08 | 01149 | [11, 22, 28, 44, 48, 49, 23] | 0 | 2025-02-08 19:00:21.621172 |
result | count | % | - | result | count | % | - | result | count | % |
---|---|---|---|---|---|---|---|---|---|---|
1 | 162 | 2 | 21 | 142 | 1.75 | 41 | 169 | 2.09 | ||
2 | 135 | 1.67 | 22 | 170 | 2.1 | 42 | 146 | 1.8 | ||
3 | 157 | 1.94 | 23 | 161 | 1.99 | 43 | 161 | 1.99 | ||
4 | 129 | 1.59 | 24 | 146 | 1.8 | 44 | 152 | 1.88 | ||
5 | 147 | 1.81 | 25 | 135 | 1.67 | 45 | 142 | 1.75 | ||
6 | 126 | 1.55 | 26 | 136 | 1.68 | 46 | 156 | 1.92 | ||
7 | 128 | 1.58 | 27 | 134 | 1.65 | 47 | 149 | 1.84 | ||
8 | 155 | 1.91 | 28 | 131 | 1.62 | 48 | 156 | 1.92 | ||
9 | 162 | 2 | 29 | 153 | 1.89 | 49 | 153 | 1.89 | ||
10 | 138 | 1.7 | 30 | 127 | 1.57 | 50 | 147 | 1.81 | ||
11 | 156 | 1.92 | 31 | 154 | 1.9 | 51 | 171 | 2.11 | ||
12 | 158 | 1.95 | 32 | 153 | 1.89 | 52 | 152 | 1.88 | ||
13 | 140 | 1.73 | 33 | 149 | 1.84 | 53 | 156 | 1.92 | ||
14 | 141 | 1.74 | 34 | 162 | 2 | 54 | 142 | 1.75 | ||
15 | 134 | 1.65 | 35 | 150 | 1.85 | 55 | 146 | 1.8 | ||
16 | 136 | 1.68 | 36 | 139 | 1.71 | |||||
17 | 135 | 1.67 | 37 | 133 | 1.64 | |||||
18 | 151 | 1.86 | 38 | 140 | 1.73 | |||||
19 | 144 | 1.78 | 39 | 139 | 1.71 | |||||
20 | 159 | 1.96 | 40 | 160 | 1.97 |
result | count | % | - | result | count | % | - | result | count | % |
---|---|---|---|---|---|---|---|---|---|---|
1 | 5 | 5.1 | 28 | 2 | 2.04 | 50 | 1 | 1.02 | ||
2 | 2 | 2.04 | 29 | 2 | 2.04 | 51 | 2 | 2.04 | ||
5 | 2 | 2.04 | 30 | 2 | 2.04 | 52 | 2 | 2.04 | ||
7 | 4 | 4.08 | 31 | 3 | 3.06 | 53 | 1 | 1.02 | ||
8 | 2 | 2.04 | 34 | 3 | 3.06 | 54 | 2 | 2.04 | ||
9 | 2 | 2.04 | 35 | 1 | 1.02 | 55 | 2 | 2.04 | ||
11 | 4 | 4.08 | 36 | 1 | 1.02 | |||||
12 | 1 | 1.02 | 37 | 2 | 2.04 | |||||
13 | 2 | 2.04 | 38 | 3 | 3.06 | |||||
15 | 1 | 1.02 | 39 | 2 | 2.04 | |||||
17 | 3 | 3.06 | 40 | 2 | 2.04 | |||||
18 | 1 | 1.02 | 41 | 2 | 2.04 | |||||
19 | 1 | 1.02 | 42 | 2 | 2.04 | |||||
20 | 2 | 2.04 | 43 | 2 | 2.04 | |||||
21 | 2 | 2.04 | 44 | 2 | 2.04 | |||||
22 | 3 | 3.06 | 45 | 2 | 2.04 | |||||
23 | 3 | 3.06 | 46 | 1 | 1.02 | |||||
24 | 2 | 2.04 | 47 | 5 | 5.1 | |||||
26 | 1 | 1.02 | 48 | 3 | 3.06 | |||||
27 | 1 | 1.02 | 49 | 2 | 2.04 |
result | count | % | - | result | count | % | - | result | count | % |
---|---|---|---|---|---|---|---|---|---|---|
1 | 5 | 5.1 | 28 | 2 | 2.04 | 50 | 1 | 1.02 | ||
2 | 2 | 2.04 | 29 | 2 | 2.04 | 51 | 2 | 2.04 | ||
5 | 2 | 2.04 | 30 | 2 | 2.04 | 52 | 2 | 2.04 | ||
7 | 4 | 4.08 | 31 | 3 | 3.06 | 53 | 1 | 1.02 | ||
8 | 2 | 2.04 | 34 | 3 | 3.06 | 54 | 2 | 2.04 | ||
9 | 2 | 2.04 | 35 | 1 | 1.02 | 55 | 2 | 2.04 | ||
11 | 4 | 4.08 | 36 | 1 | 1.02 | |||||
12 | 1 | 1.02 | 37 | 2 | 2.04 | |||||
13 | 2 | 2.04 | 38 | 3 | 3.06 | |||||
15 | 1 | 1.02 | 39 | 2 | 2.04 | |||||
17 | 3 | 3.06 | 40 | 2 | 2.04 | |||||
18 | 1 | 1.02 | 41 | 2 | 2.04 | |||||
19 | 1 | 1.02 | 42 | 2 | 2.04 | |||||
20 | 2 | 2.04 | 43 | 2 | 2.04 | |||||
21 | 2 | 2.04 | 44 | 2 | 2.04 | |||||
22 | 3 | 3.06 | 45 | 2 | 2.04 | |||||
23 | 3 | 3.06 | 46 | 1 | 1.02 | |||||
24 | 2 | 2.04 | 47 | 5 | 5.1 | |||||
26 | 1 | 1.02 | 48 | 3 | 3.06 | |||||
27 | 1 | 1.02 | 49 | 2 | 2.04 |
result | count | % | - | result | count | % | - | result | count | % |
---|---|---|---|---|---|---|---|---|---|---|
1 | 6 | 3.3 | 22 | 7 | 3.85 | 43 | 3 | 1.65 | ||
2 | 2 | 1.1 | 23 | 4 | 2.2 | 44 | 2 | 1.1 | ||
3 | 2 | 1.1 | 24 | 3 | 1.65 | 45 | 3 | 1.65 | ||
4 | 3 | 1.65 | 25 | 1 | 0.55 | 46 | 3 | 1.65 | ||
5 | 3 | 1.65 | 26 | 3 | 1.65 | 47 | 6 | 3.3 | ||
7 | 4 | 2.2 | 27 | 1 | 0.55 | 48 | 4 | 2.2 | ||
8 | 4 | 2.2 | 28 | 4 | 2.2 | 49 | 3 | 1.65 | ||
9 | 3 | 1.65 | 29 | 4 | 2.2 | 50 | 5 | 2.75 | ||
10 | 3 | 1.65 | 30 | 4 | 2.2 | 51 | 7 | 3.85 | ||
11 | 7 | 3.85 | 31 | 5 | 2.75 | 52 | 3 | 1.65 | ||
12 | 2 | 1.1 | 33 | 1 | 0.55 | 53 | 4 | 2.2 | ||
13 | 4 | 2.2 | 34 | 4 | 2.2 | 54 | 2 | 1.1 | ||
14 | 2 | 1.1 | 35 | 1 | 0.55 | 55 | 2 | 1.1 | ||
15 | 1 | 0.55 | 36 | 3 | 1.65 | |||||
16 | 2 | 1.1 | 37 | 6 | 3.3 | |||||
17 | 3 | 1.65 | 38 | 3 | 1.65 | |||||
18 | 5 | 2.75 | 39 | 4 | 2.2 | |||||
19 | 2 | 1.1 | 40 | 5 | 2.75 | |||||
20 | 2 | 1.1 | 41 | 4 | 2.2 | |||||
21 | 4 | 2.2 | 42 | 4 | 2.2 |
result | count | % | - | result | count | % | - | result | count | % |
---|---|---|---|---|---|---|---|---|---|---|
1 | 7 | 2.63 | 21 | 6 | 2.26 | 41 | 6 | 2.26 | ||
2 | 3 | 1.13 | 22 | 8 | 3.01 | 42 | 6 | 2.26 | ||
3 | 3 | 1.13 | 23 | 4 | 1.5 | 43 | 3 | 1.13 | ||
4 | 4 | 1.5 | 24 | 5 | 1.88 | 44 | 4 | 1.5 | ||
5 | 3 | 1.13 | 25 | 1 | 0.38 | 45 | 4 | 1.5 | ||
6 | 2 | 0.75 | 26 | 4 | 1.5 | 46 | 3 | 1.13 | ||
7 | 5 | 1.88 | 27 | 3 | 1.13 | 47 | 8 | 3.01 | ||
8 | 4 | 1.5 | 28 | 4 | 1.5 | 48 | 6 | 2.26 | ||
9 | 5 | 1.88 | 29 | 7 | 2.63 | 49 | 4 | 1.5 | ||
10 | 5 | 1.88 | 30 | 6 | 2.26 | 50 | 5 | 1.88 | ||
11 | 10 | 3.76 | 31 | 5 | 1.88 | 51 | 10 | 3.76 | ||
12 | 3 | 1.13 | 32 | 2 | 0.75 | 52 | 4 | 1.5 | ||
13 | 5 | 1.88 | 33 | 4 | 1.5 | 53 | 6 | 2.26 | ||
14 | 3 | 1.13 | 34 | 4 | 1.5 | 54 | 5 | 1.88 | ||
15 | 2 | 0.75 | 35 | 2 | 0.75 | 55 | 4 | 1.5 | ||
16 | 9 | 3.38 | 36 | 5 | 1.88 | |||||
17 | 5 | 1.88 | 37 | 8 | 3.01 | |||||
18 | 7 | 2.63 | 38 | 4 | 1.5 | |||||
19 | 5 | 1.88 | 39 | 7 | 2.63 | |||||
20 | 4 | 1.5 | 40 | 5 | 1.88 |
Since there are many people asked, I write this section.
The project is schedule automatically via Github Actions, run a script, fetch data and auto commit to Github. No server is required, I don't need to do anything. Details in workflow file
I just inspected network packages sent between browser and server to find out how data is fetched and replicated that in Python code.
pip install -i https://test.pypi.org/simple/ vietlott-data==0.1.3
project provides two cli
Usage: vietlott-crawl [OPTIONS] PRODUCT
crawl a product with a given run date or from/to index page
Options:
--run-date TEXT
--index_from INTEGER page index from run since we crawl by pagination the
pages
--index_to INTEGER page index from run since we crawl by pagination the
pages
--help Show this message and exit.
Usage: vietlott-missing [OPTIONS] PRODUCT
detect_missing_data and run if needed :param ctx: context :param product:
product to run :param limit: number of pages to run :return:
Options:
--limit INTEGER
--help Show this message and exit.