You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决BeautifulSoup抓取六合彩官网日期返回空的问题?需抓20期数据

六合彩开奖信息抓取问题解决

问题根源

你的代码返回空列表,核心原因是网站的基础反爬机制拦截了默认的requests请求——服务器识别出请求并非来自浏览器,因此返回的页面不包含目标开奖元素。

修正方案(抓取最近20期日期及号码)

添加浏览器请求头模拟正常访问,同时正确提取日期、普通号码和特别号码:

from bs4 import BeautifulSoup
import requests

# 模拟浏览器请求头,避免被反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

url = "https://bet.hkjc.com/marksix/Results.aspx?lang=ch"
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

# 获取所有开奖记录行(页面默认加载最近多期,足够提取20期)
result_rows = soup.find_all("div", class_="resultMainRow")

# 提取前20期数据
for idx, row in enumerate(result_rows[:20], 1):
    # 提取开奖日期
    draw_date = row.find("div", class_="resultDrawDate").get_text(strip=True)
    # 提取期号
    draw_no = row.find("div", class_="resultDrawNo").get_text(strip=True)
    # 提取普通开奖号码
    normal_nums = [ball.get_text(strip=True) for ball in row.find_all("div", class_="resultBall")]
    # 提取特别号码
    special_num = row.find("div", class_="resultSpecialBall").get_text(strip=True)
    
    print(f"第{idx}期 {draw_no}")
    print(f"开奖日期: {draw_date}")
    print(f"普通号码: {' '.join(normal_nums)}")
    print(f"特别号码: {special_num}")
    print("-" * 30)

关键说明

  • 若后续抓取失败,先检查页面元素类名是否被网站修改(这类站点会不定期调整结构)。
  • 不要频繁发送请求,建议添加time.sleep(1)之类的间隔,避免触发更严格的反爬限制。

内容的提问来源于stack exchange,提问作者harry harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:15:10