# import requests from curl_cffi import requests import retrying 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": "zh-CN,zh;q=0.9", "cache-control": "no-cache", "pragma": "no-cache", "priority": "u=0, i", "referer": "https://booking.jetstar.com/", "sec-ch-ua": "\"Google Chrome\";v=\"135\", \"Not-A.Brand\";v=\"8\", \"Chromium\";v=\"135\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "document", "sec-fetch-mode": "navigate", "sec-fetch-site": "same-origin", "sec-fetch-user": "?1", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" } cookies = { "bm_sz": "80764634952076F4EC0668CAE470DF02~YAAQh6InF+vHy7OWAQAAPBkxtBvjipCr2+Be8lQpPuukMutGdZhmvPLcnZxIE0H2SW8teLqWp1Pvw21yJC+5YdaIKtxfxi0OuJ8v+NYVJhYGUTIhe0PpH/U5LLuwLSHz3U/e4AhvEklMvEWDUPGyGsBVUktXU8G4WhSk0rur3qSc/ytEzR8U/oP3quyUwtlFgX8liYL6uhvWEY+4yRjnhaJykTIt7Fw+BhWNVvF8jKtn7usSkqm6oi+S3zSEZD8iBZolfvNCsmuZ3lD+PNlG8zH3hSiQAvC5vCPcskk6AONlJP2URQVkirgZzORWdM0+Uit7lyqEmossKcSdxITkS4amRpXnUN97PSG1Lji0j0JrytJAC2PP0VUlqtSgn0k/iTLz2+L498HNB0VpoSrW8lTry8jtixmFJ+c/iUiFWW6jvqZWAG6p01J+v95zmkX3vmkN2aR5p74UHxyBxm/Y4ZRlbgSj34TS+Z6erY/ezT0Xp9coSt7+mf2LntSVpSlxj4ZA54Pn5pN9oaPqtm1/Xz6kkYH43DIKXhoUghwV/YcKUeeF2bowXCWCbGVGkg==~3425331~3687985", } url = "https://booking.jetstar.com/hk/zh/booking/search-flights" @retrying.retry(stop_max_attempt_number=1) def req(i): params = { "s": "true", "adults": "1", "children": "0", "infants": "0", "selectedclass1": "economy", "currency": "CNY", "mon": "true", "channel": "DESKTOP", "origin1": "PVG", "destination1": "NRT", "departuredate1": f"2025-05-{i}" } response = requests.get(url, headers=headers, cookies=cookies, params=params, timeout=15, verify=False, # proxies=proxies # allow_redirects=False http_version=2 ) # print(response.text) print(response) from lxml import etree import json html = etree.HTML(response.text) data = html.xpath("//script[@id='bundle-data-v2']/text()")[0] if html.xpath( "//script[@id='bundle-data-v2']/text()") else '{}' json_data = json.loads(data) print(json_data) for i in range(9, 31): req(i)