Python中如何抓取捷星航空的数据?
这个网站的航班过一段时间过期,失效,这种的如何处理?求高手指教
Python中如何抓取捷星航空的数据?
10 回复
一两年前抓过,那个时候还没有防护,后来慢慢升级,从 cookie,慢慢换成 js 加密到混淆,慢慢打断点分析,肯定能找出来的,只是时间问题,不过这机票数据一般都是公司在爬,楼主爬来干嘛…
要抓取捷星航空的数据,你得用网络爬虫。通常我会用 requests 来获取网页,用 BeautifulSoup 来解析HTML。不过像航空公司这种网站,反爬措施可能比较严,直接请求可能拿不到数据,或者页面是JavaScript动态加载的。
这里有个基础示例,展示怎么用 requests 和 BeautifulSoup 来抓取一个静态页面的航班搜索结果。但注意,捷星的实际网站很可能不是这样工作的。
import requests
from bs4 import BeautifulSoup
# 模拟一个搜索请求的URL(这个URL是假设的,你需要找到捷星实际使用的搜索接口)
url = "https://www.jetstar.com/search?from=SYD&to=MEL&date=2023-10-01"
# 需要设置一个User-Agent头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
try:
response = requests.get(url, headers=headers)
response.raise_for_status() # 检查请求是否成功
soup = BeautifulSoup(response.content, 'html.parser')
# 这里就是最难的部分:你需要手动分析网页结构,找到包含航班信息的HTML元素。
# 下面这行代码是假设性的,实际的选择器会完全不同。
flight_elements = soup.select('.flight-result-item')
for flight in flight_elements:
# 同样,如何提取具体信息(如价格、时间)取决于网页的实际结构
# 这需要你使用浏览器的开发者工具仔细查看
# price = flight.select_one('.price').text
# departure = flight.select_one('.departure-time').text
# print(f"价格: {price}, 出发时间: {departure}")
print(flight.prettify()[:500]) # 先打印前500字符看看结构
except requests.exceptions.RequestException as e:
print(f"请求出错: {e}")
except Exception as e:
print(f"解析出错: {e}")
关键点:
- 动态内容:如果数据是JS加载的(大概率是),
requests拿到的HTML里没有航班信息。你需要用Selenium或Playwright这类工具控制真实浏览器,或者更优的方案是找到网站背后的API接口(通过浏览器开发者工具的“网络”选项卡查找XHR/Fetch请求)。 - 反爬虫:网站可能有IP封锁、验证码、请求头校验等。你可能需要轮换User-Agent、使用代理IP池,并添加合理的请求间隔(
time.sleep)。 - 法律与条款:抓取前务必查看
robots.txt和服务条款,确保你的行为是允许的。过量请求可能导致你的IP被封。 - 结构变化:网站前端结构一变,你的选择器就失效了,代码需要维护。
总结:先研究网站是用API还是动态渲染,再决定用requests还是Selenium。
我就是公司,但是这个时间过期是 cookie 里面的参数过期了?方便加 qq 聊聊吗?谢谢
我就是公司,但是这个时间过期是 cookie 里面的参数过期了?方便加 qq 聊聊吗?谢谢
1550526230,我已经一两年没关注这些了,希望能只能给你一些些建议
你现在看一下,现在是这个网页会失效,不是加密
你抓 jetstar 还不如抓 MU CX,出了 BUG 票都认欢迎你们来飞
我只是想破解这个反爬,之前没见过这种,这种过期的,
希望交流一下这个网站的破解
你之前加密是哪里加密啊,是 cookie 吗

