Python自动ajax刷新?

I scraped cricbuzz website to view score and other details..It will display scores with some details every 30 seconds...How to automatically update if the score changes in the cricbuzz website through ajax... is there any module?

    from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import time
while True:


    html = urlopen("http://www.cricbuzz.com/live-cricket-scores/16478/aus-vs-nz-1st-odi-new-zealand-tour-of-australia-2016")
    bsObj= BeautifulSoup(html,"html5lib")
#print(bsObj.prettify())
    players=[]
    detail=[]
    scores =bsObj.find("span",{"class":"cb-font-20 text-bold"})
    print(scores.get_text())
    detail.append(scores.get_text())
    status=bsObj.find("div",{"class":{"cb-text-inprogress","cb-text-lunch","cb-text-stump","cb-text-innings break","cb-text-tea"}})
    print("Status: ")
    print(status.get_text())
    detail.append(status.get_text())
    for link in bsObj.find('div', {"class":"cb-min-inf cb-col-100"}).find("div").next_siblings:
        if link.a.get_text() not in players:
            players.append(link.a.get_text())
            players.append(link.find('div',{"class":"cb-col cb-col-10 ab text-right"}).string)
    print("Players: ")                    
    for i in players:
        print(i)
    detail.append(players)
    print(detail)

    print("-----------------------------------------------------------------------------------")
    time.sleep(30)

So if you're willing to get live game info from http://www.cricbuzz.com/live-cricket-scores/16478/aus-vs-nz-1st-odi-new-zealand-tour-of-australia-2016, that url is not the exact page you want to keep requesting.

Basically as you said, that page is updated by ajax request, so what you want is to go after that specific ajax url which is http://push.cricbuzz.com/match-push?id=16478 in this case, and it's a JSON-ready object, how nice is that?

{
    "settings": {
        "refresh": 15000,
        "timeout": 30000,
        "pull_geo": [],
        "force_refresh": false,
        "video_geo": {
            "country": ["US",
            "CA"]
        },
        "video_enabled": false,
        "mode": "push"
    },
    "id": "16478",
    "series": {
        "id": "2444",
        "name": "New Zealand tour of Australia, 2016",
        "short_name": "NZ tour of AUS",
        "type": "",
        "tour": false,
        "start_date": "1480723200",
        "end_date": "1481328000",
        "category": "International"
    },
    "start_time": "1480821600",
    "exp_end_time": "1480850400",
    "state": "inprogress",
    "dn": true,
    "match_desc": "1st ODI",
    "type": "ODI",
    "live_coverage": true,
    "minor_series": false,
    "state_title": "Live",
    "status": "New Zealand need 257 runs",
    "score": {
        "over_summary": {
            "over": "5",
            "ball_def": "30",
            "rem_over": "5",
            "runs": "33",
            "wickets": "0",
            "fours": "6",
            "sixes": "0"
        },
        "prev_overs": " . 1 . . . . | 4 . 4 . . 4 | . . 1 1 . 4 | 4 . . 1 ",
        "batting": {
            "id": "13",
            "score": "68/2 (13.4 Ovs)",
            "innings": [{
                "id": "2",
                "score": "68",
                "wkts": "2",
                "overs": "13.4"
            }]
        },
        "bowling": {
            "id": "4",
            "score": "324/8 (50.0 Ovs)",
            "innings": [{
                "id": "1",
                "score": "324",
                "wkts": "8",
                "overs": "50"
            }]
        },
        "rrr": "7.07",
        "max_overs": "50",
        "crr": "4.98",
        "target": "325",
        "prtshp": "34(35)",
        "last_wkt": "6326",
        "last_wkt_score": "9 (16)",
        "batsman": [{
            "id": "8983",
            "strike": "1",
            "r": "12",
            "b": "15",
            "4s": "2",
            "6s": "0"
        },
        {
            "id": "1457",
            "strike": "0",
            "r": "43",
            "b": "45",
            "4s": "5",
            "6s": "2"
        }],
        "bowler": [{
            "id": "8095",
            "o": "1.4",
            "m": "0",
            "r": "17",
            "w": "0"
        },
        {
            "id": "6250",
            "o": "3",
            "m": "0",
            "r": "12",
            "w": "0"
        }]
    },
    "hys": "false",
    "toss": {
        "winner": "Australia",
        "decision": "Batting"
    },
    "team1": {
        "id": "4",
        "name": "Australia",
        "s_name": "AUS",
        "round_flag": "4_50.png",
        "square_flag": "team_4_50.png",
        "squad": [1739,
        1643,
        2250,
        1440,
        6250,
        8497,
        1649,
        8095,
        7710,
        8642,
        6258],
        "squad_bench": [7662,
        7789,
        8876]
    },
    "team2": {
        "id": "13",
        "name": "New Zealand",
        "s_name": "NZ",
        "round_flag": "13_50.png",
        "square_flag": "team_13_50.png",
        "squad": [1457,
        8216,
        6326,
        8983,
        8085,
        1459,
        10100,
        8081,
        9067,
        10692,
        8117],
        "squad_bench": [10694,
        1057,
        8676]
    },
    "comm_lines": [{
        "timestamp": "1480840812865",
        "i_id": "2",
        "evt": "other",
        "comm": "A short-leg is in place now.."
    },
    {
        "timestamp": "1480840809865",
        "i_id": "2",
        "o_no": "13.4",
        "b_no": "82",
        "score": "68",
        "wkts": "2",
        "batsman": [{
            "id": "1457",
            "strike": "1",
            "4s": "5",
            "6s": "2",
            "r": "43",
            "b": "45"
        }],
        "bowler": [{
            "id": "8095",
            "o": "1",
            "m": "0",
            "r": "17",
            "w": "0",
            "n": "0",
            "wd": "0"
        }],
        "evt": "other",
        "comm": "P Cummins to Guptill, 1 run, Cummins has been way too short in this spell, Guptill rides the bounce and cuts it square past cover, a single to the man in the deep"
    },
    {
        "timestamp": "1480840769121",
        "i_id": "2",
        "o_no": "13.3",
        "b_no": "81",
        "score": "67",
        "wkts": "2",
        "batsman": [{
            "id": "1457",
            "strike": "1",
            "4s": "5",
            "6s": "2",
            "r": "42",
            "b": "44"
        }],
        "bowler": [{
            "id": "8095",
            "o": "1",
            "m": "0",
            "r": "16",
            "w": "0",
            "n": "0",
            "wd": "0"
        }],
        "evt": "other",
        "comm": "P Cummins to Guptill, no run, short and wide from Cummins, Guptill hopped across on the ferocious cut, gets beaten on the top-edge"
    },
    {
        "timestamp": "1480840731850",
        "i_id": "2",
        "o_no": "13.2",
        "b_no": "80",
        "score": "67",
        "wkts": "2",
        "batsman": [{
            "id": "1457",
            "strike": "1",
            "4s": "5",
            "6s": "2",
            "r": "42",
            "b": "43"
        }],
        "bowler": [{
            "id": "8095",
            "o": "1",
            "m": "0",
            "r": "16",
            "w": "0",
            "n": "0",
            "wd": "0"
        }],
        "evt": "other",
        "comm": "P Cummins to Guptill, no run, Cummins responds with a bouncer, Guptill drops his wrists and lets it go"
    },
    {
        "timestamp": "1480840699390",
        "i_id": "2",
        "o_no": "13.1",
        "b_no": "79",
        "score": "67",
        "wkts": "2",
        "batsman": [{
            "id": "1457",
            "strike": "1",
            "4s": "5",
            "6s": "2",
            "r": "42",
            "b": "42"
        }],
        "bowler": [{
            "id": "8095",
            "o": "1",
            "m": "0",
            "r": "16",
            "w": "0",
            "n": "0",
            "wd": "0"
        }],
        "evt": "four",
        "all_evt": ["four"],
        "comm": "P Cummins to Guptill, <b>FOUR<\/b>, Cummins is leaking boundaries, this was full and wide of off. Guptill reaches out and slices the drive - square on the off-side, beats the fielder getting across from deep cover"
    }],
    "latest_video": {
        "timestamp": "1480839773003",
        "comm": "Hazlewood to Neesham, <b>FOUR<\/b>, nicely played by Neesham, full and on Neesham's pads, he gets inside the line and clips it past mid-wicket, the timing is sweet and the ball rolls away to the fence",
        "comm": "Hazlewood to Neesham, <b>FOUR<\/b>, nicely played by Neesham, full and on Neesham's pads, he gets inside the line and clips it past mid-wicket, the timing is sweet and the ball rolls away to the fence",
        "o_no": "9.4",
        "video": "0_qbtvgqc4"
    }
}

Now just use json module to parse it and extract whatever you want.