स्निपेट पहले से ही काम करता है लेकिन मुझे कुछ डुप्लिकेट परिणामों को फ़िल्टर करने में मदद चाहिए।

अंक # 1: कुछ मिनटों के लिए स्क्रिप्ट चलाने के बाद, यह डुप्लिकेट परिणाम / समान परिणाम प्रदर्शित करता है

अंक # 2: कभी-कभी, यह कुछ डेटा याद करता है। मुझे यकीन नहीं है कि यह सामान्य है

लक्ष्य # 1: डुप्लिकेट को हटा दें / प्रक्रिया न करें यदि इसे पहले ही पढ़ा जा चुका है

लक्ष्य # 2: संभवतः सभी डेटा को उत्तराधिकार/निरंतरता में पढ़ें। (१०२०५४०१, १०२०५४०२, १०२०५४०३, १०२०५४०४ और इसी तरह)

from bs4 import BeautifulSoup
from time import sleep
import re, requests

trim = re.compile(r'[^\d,.]+')

url = "https://bscscan.com/txs?a=0x10ed43c718714eb63d5aa57b78b54704e256024e&ps=100&p=1"
baseurl = 'https://bscscan.com/tx/'
header = {"User-Agent": "Mozilla/5.0"}
scans = 0
previous_block = 0
while True:
    scans += 1
    reqtxsInternal = requests.get(url,header, timeout=2)
    souptxsInternal = BeautifulSoup(reqtxsInternal.content, 'html.parser')
    blocktxsInternal = souptxsInternal.findAll('table')[0].findAll('tr')
    print (" -> Whole Page Scanned: ", scans)
    for row in blocktxsInternal[1:]:
        txnhash = row.find_all('td')[1].text[0:]
        txnhashdetails = txnhash.strip()
        block = row.find_all('td')[3].text[0:]
        if float(block) > float(previous_block):
            previous_block = block
        value = row.find_all('td')[9].text[0:]
        amount = trim.sub('', value).replace(",", "")
        transval = float(amount)
        
        if float(transval) >= 0 and block == previous_block:
            print ("    Processing data -> " + str(txnhashdetails)[60:] + "   " + str(block) + "   " + str(transval))
        else:
            pass
    
sleep(1)

वर्तमान आउटपुट: (स्क्रिप्ट चलाने के कुछ मिनटों के बाद)

-> Whole Page Scanned:  14
 Processing data -> 8490f9   10205401   0.0
 Processing data -> 31f486   10205401   0.753749522929516
 Processing data -> 180ff9   10205401   0.0011
-> Whole Page Scanned:  15              <--- duplicate reads/data
 Processing data -> 8490f9   10205401   0.0                  
 Processing data -> 31f486   10205401   0.753749522929516
 Processing data -> 180ff9   10205401   0.0011
-> Whole Page Scanned:  16 >            <--- just fine
 Processing data -> 836486   10205402   0.0345
 Processing data -> d05a8a   10205402   1.37
 Processing data -> 0a035d   10205402   0.3742134
-> Whole Page Scanned:  17               <--- missed one (10205403)                   
 Processing data -> e9d7b7   10205404   10.10
 Processing data -> 9079c9   10205404   1.09
 Processing data -> f8a8a0   10205404   100.2
-2
rbutrnz 21 अगस्त 2021, 01:35

2 जवाब

सबसे बढ़िया उत्तर

मैं स्निपेट में सुधार करने में कामयाब रहा और यह अब फिर से वही डेटा नहीं पढ़ता है। डेटा पढ़ने के लिए छोड़ देता है, मुझे लगता है कि पेज के रीफ्रेश के साथ इसका कुछ संबंध है। कभी-कभी, पढ़ा गया डेटा लंबा होता है और जब यह पुन: स्कैन होता है, तो दो या अधिक ब्लॉक बीत चुके होते हैं।

from bs4 import BeautifulSoup
from time import sleep
import re, requests

trim = re.compile(r'[^\d,.]+')

#-- check latest block
url = "https://bscscan.com/txs?a=0x10ed43c718714eb63d5aa57b78b54704e256024e&ps=100&p=1"
header = {"User-Agent": "Mozilla/5.0"}
reqtxsInternal = requests.get(url,header, timeout=2)
souptxsInternal = BeautifulSoup(reqtxsInternal.content, 'html.parser')
blocktxsInternal = souptxsInternal.findAll('table')[0].findAll('tr', limit=2)#[1:]
for row in blocktxsInternal[1:]:
    startblock = int(row.find_all('td')[3].text[0:])
#-- check latest block

scans = 0
prev_block = int(startblock - 1)
while True:
    scans += 1
    url = "https://bscscan.com/txs?a=0x10ed43c718714eb63d5aa57b78b54704e256024e&ps=100&p=1"
    header = {"User-Agent": "Mozilla/5.0"}
    reqtxsInternal = requests.get(url,header, timeout=2)
    souptxsInternal = BeautifulSoup(reqtxsInternal.content, 'html.parser')
    blocktxsInternal = souptxsInternal.findAll('table')[0].findAll('tr')
    for row in blocktxsInternal[1:]:
        txnhash = row.find_all('td')[1].text[0:]
        txnhashdetails = txnhash.strip()
        block = int(row.find_all('td')[3].text[0:])
        value = row.find_all('td')[9].text[0:]
        amount = trim.sub('', value).replace(",", "")
        transval = float(amount)
        if (block >= prev_block):
            if (transval >= 0):
                print("Process Data -> " + str(txnhashdetails)[60:] + "  "  + str(block) + " " + str(transval))
                prev_block = block
        elif int(block < int(block)-1):           
            pass         
        else:
            continue
    print (" -> Whole Page Scanned: " + str(scans) + "   " + str(prev_block))
    sleep(1)
    print ()
                

मौजूदा उत्पादन:

Process Data -> 7972bd  10374519 2.4
 -> Whole Page Scanned: 1   10374519

Process Data -> 1f2166  10374520 1.055826801385845
 -> Whole Page Scanned: 2   10374520

Process Data -> 2a88c9  10374522 2.48
Process Data -> ebb114  10374522 1.42
 -> Whole Page Scanned: 3   10374522

Process Data -> 9c1fd0  10374523 2.49
Process Data -> b6a747  10374523 12.92714512958549
 -> Whole Page Scanned: 4   10374523

Process Data -> 159878  10374524 5.2134
Process Data -> 73c759  10374524 5.0
 -> Whole Page Scanned: 5   10374524

Process Data -> d01ca7  10374526 2.0
Process Data -> 8138eb  10374526 3.87
Process Data -> fcd3f3  10374526 1.471087011043643
 -> Whole Page Scanned: 6   10374526

Process Data -> 464e13  10374527 1.0
Process Data -> faa9c9  10374527 2.2
Process Data -> b9ee22  10374527 1.803
 -> Whole Page Scanned: 7   10374527
0
rbutrnz 26 अगस्त 2021, 20:32

इसे एक बार आजमाएं।

from bs4 import BeautifulSoup
from time import sleep
import re, requests

trim = re.compile(r'[^\d,.]+')

url = "https://bscscan.com/txs?a=0x10ed43c718714eb63d5aa57b78b54704e256024e&ps=100&p=1"
baseurl = 'https://bscscan.com/tx/'
header = {"User-Agent": "Mozilla/5.0"}
scans = 0
recorded_blocks = []
while True:
    scans += 1
    reqtxsInternal = requests.get(url,header, timeout=2)
    souptxsInternal = BeautifulSoup(reqtxsInternal.content, 'html.parser')
    blocktxsInternal = souptxsInternal.findAll('table')[0].findAll('tr')

    for row in blocktxsInternal[1:]:
        txnhash = row.find_all('td')[1].text[0:]
        txnhashdetails = txnhash.strip()
        block = row.find_all('td')[3].text[0:]
        
        value = row.find_all('td')[9].text[0:]
        amount = trim.sub('', value).replace(",", "")
        transval = float(amount)
        
        if (float(block),float(transval))  not in recorded_blocks:
            recorded_blocks.append((float(block),float(transval)))
            if float(transval) >= 1:
                print ("Doing something with the data -> " + str(block) + "   " + str(transval))
            else:
                pass
       
    print (" -> Whole Page Scanned: ", scans)
    sleep(1)
2
chitown88 30 अगस्त 2021, 12:32