How to optimize the below script and make it faster and more efficient:

import requests
import json
import time
from datetime import datetime
import re

def get_page_numbers():
    with open('page_numbers.txt', 'r') as file:
        return [line.strip() for line in file if line.strip()]

def current_unix_time():
    return int(time.time())

def unix_time_to_date(unix_time):
    return datetime.fromtimestamp(unix_time).strftime("%m/%d/%Y")

def make_request(page_number):
    url = "https://crawl4ai.com/crawl"
    
    headers = {
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "accept-language": "en-US,en;q=0.9",
        "cache-control": "no-cache",
        "pragma": "no-cache",
        "priority": "u=0, i",
        "sec-ch-ua": "\"Not)A;Brand\";v=\"99\", \"Google Chrome\";v=\"127\", \"Chromium\";v=\"127\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "document",
        "sec-fetch-mode": "navigate",
        "sec-fetch-site": "none",
        "sec-fetch-user": "?1",
        "upgrade-insecure-requests": "1",
        "user-agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/99.0.4844.47 Mobile/15E148 Safari/604.1"
    }
    
    data = {
        "urls": [f"https://keysfinder.net/ethereum/{page_number}"],
        "include_raw_html": True,
        "word_count_threshold": 10,
        "extraction_strategy": "NoExtractionStrategy",
        "chunking_strategy": "RegexChunking",
        "screenshot": False
    }
    
    response = requests.post(url, headers=headers, json=data)
    return response.json()

def parse_response(response_data):
    html_content = response_data['results'][0]['html'] if 'results' in response_data and response_data['results'] else ''
    
    # Parse Total Balance
    total_balance_match = re.search(r'Total balance:\s*<span id="total-balance">([\d.]+)</span>', html_content)
    if not total_balance_match:
        total_balance_match = re.search(r'class="balance badge bg-success" title="([\d.]+)"', html_content)
    total_balance = total_balance_match.group(1) if total_balance_match else "0.000"
    
    # Parse Private Keys
    private_keys = re.findall(r'\n__(.*?)__', html_content)
    
    return {
        "Total Balance": total_balance,
        "Private Keys": private_keys,
    }

def check_results(parsed_data):
    total_balance = float(parsed_data["Total Balance"])
    
    if total_balance > 0.00:
        return "Success"
    else:
        return "Failure"

def save_positive_balance(parsed_data, page_number, date):
    with open("positive_balance.txt", "a") as file:
        file.write(f"Date: {date}\n")
        file.write(f"Page Number: {page_number}\n")
        file.write(f"Total Balance: {parsed_data['Total Balance']}\n")
        
        for i, key in enumerate(parsed_data["Private Keys"]):
            file.write(f"Private Key {i+1}: {key}\n")
        
        file.write("\n")  # Add a blank line between entries

def main():
    page_numbers = get_page_numbers()
    cut = current_unix_time()
    date = unix_time_to_date(cut)
    
    for page_number in page_numbers:
        print(f"\nProcessing Page Number: {page_number}")
        response_data = make_request(page_number)
        parsed_data = parse_response(response_data)
        result = check_results(parsed_data)
        
        print(f"Date: {date}")
        print(f"Result: {result}")
        print(f"Total Balance: {parsed_data['Total Balance']}")
        print(f"Number of Private Keys: {len(parsed_data['Private Keys'])}")
        
        if result == "Success":
            save_positive_balance(parsed_data, page_number, date)
            print("Positive balance found! Data saved to positive_balance.txt")
        
        print(f"Parsed Data: {json.dumps(parsed_data, indent=2)}")
        
        time.sleep(10)  # Wait 10 seconds between requests to avoid rate limiting

if __name__ == "__main__":
    main()