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

请求基础代码:爬取指定URL教会规模字段并构建排名表

基础代码片段与调试指南

核心实现逻辑

  1. 循环遍历ID范围5550-5615,逐个请求目标页面
  2. 提取「教会规模」字段(需先通过浏览器工具确认对应元素ID)
  3. 收集有效数据后按规模降序排序
  4. 输出结构化的排名表

可调试代码片段

import requests
from bs4 import BeautifulSoup

# 存储教会数据的容器
church_records = []

# 遍历目标ID区间
for church_id in range(5550, 5616):
    target_url = f"https://oppsearch.ucc.org/web/fastdetails.aspx?id={church_id}&KeepThis=false&TB_iframe=true&height=&width="
    
    try:
        # 发送HTTP请求
        response = requests.get(target_url)
        response.raise_for_status()  # 捕获请求失败的情况
        
        soup = BeautifulSoup(response.content, "html.parser")
        
        # --- 关键调试点:替换为实际的教会规模元素ID ---
        # 打开id=5611的页面,右键教会规模字段→检查,复制对应的id属性值
        size_element = soup.find(id="ContentPlaceHolder1_churchSize")  # 示例ID,需自行验证
        
        if size_element:
            # 提取并清理字段文本
            raw_size = size_element.get_text(strip=True)
            # 尝试转换为数值(适配数字型规模)
            try:
                size_value = int(raw_size)
            except ValueError:
                # 若为文本描述(如"Medium"),保留原内容
                size_value = raw_size
            
            # 可选:提取教会名称作为辅助信息
            name_element = soup.find(id="ContentPlaceHolder1_churchName")
            church_name = name_element.get_text(strip=True) if name_element else "未知教会"
            
            church_records.append({
                "id": church_id,
                "name": church_name,
                "size": size_value
            })
            print(f"已获取ID {church_id} 的数据")
        else:
            print(f"ID {church_id} 未找到教会规模字段")
    
    except requests.exceptions.RequestException as err:
        print(f"请求ID {church_id} 失败: {err}")

# 按教会规模降序排序
# 适配数值与文本混合的排序场景
def sort_criteria(item):
    if isinstance(item["size"], int):
        return -item["size"]  # 数值降序
    else:
        return item["size"].lower()  # 文本按字典序排序

sorted_records = sorted(church_records, key=sort_criteria)

# 输出排名结果
print("\n--- 教会规模排名表 ---")
for rank, record in enumerate(sorted_records, 1):
    print(f"{rank}. ID: {record['id']} | 教会名称: {record['name']} | 规模: {record['size']}")

关键调试提示

  • 确认元素ID:打开id=5611的页面,用浏览器F12开发者工具定位「教会规模」字段,复制其id属性替换代码中的示例ID
  • 数据类型适配:如果规模是文本描述(如"Small/Large"),可调整排序逻辑匹配需求
  • 请求频率控制:若爬取时遇到限制,可添加time.sleep(1)(需导入time模块)降低请求速度
  • 异常扩展:可根据实际情况补充字段缺失、数据格式异常的处理逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:28:29