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

请求协助解决FAA N Number数据库爬取时requests.get()超时问题

问题:requests.get访问FAA N Number数据库页面超时
  • 已成功按教程爬取示例网站(quotes.toscrape.com),但使用requests.get()访问FAA N Number数据库查询页面时持续超时,即使设置了timeout=10参数
  • 已定位问题出在该请求行,查阅过requests.get()用法并调试,仍未解决
  • 需求:解决超时问题,最终提取机型、制造商等数据

已尝试操作

  • 确认Python环境可正常访问其他页面(如示例网站)
  • 定位问题行是requests.get()请求FAA数据库的代码
  • 查阅requests.get()官方文档及用法
  • 调试过程中出现错误提示,最终仍回到超时状态

解决思路及代码示例

1. 添加请求头模拟浏览器访问

多数网站会拦截无浏览器标识的请求,添加User-Agent等请求头可绕过基础反爬:

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'
}

try:
    webpage = requests.get(
        'https://registry.faa.gov/AircraftInquiry/Search/NNumberResult?nNumberTxt=7711M',
        headers=headers,
        timeout=30  # 政府网站响应通常较慢,适当延长超时时间
    )
    webpage.raise_for_status()  # 主动触发请求错误,便于排查
    soup = BeautifulSoup(webpage.text, "lxml")
    
    # 提取目标数据并去除多余空白字符
    models = soup.find_all("td", attrs={"data-label":"Model"})
    manufacturers = soup.find_all("td", attrs={"data-label":"Manufacturer Name"})
    
    for model, manufacturer in zip(models, manufacturers):
        print(f"{model.get_text(strip=True)} - {manufacturer.get_text(strip=True)}")
except requests.exceptions.RequestException as e:
    print(f"请求出错: {e}")

2. 使用会话保持连接

部分网站需要维持会话状态才能正常响应,requests.Session()可复用连接提升稳定性:

from bs4 import BeautifulSoup
import requests

session = requests.Session()
session.headers.update({
    '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'
})

try:
    webpage = session.get(
        'https://registry.faa.gov/AircraftInquiry/Search/NNumberResult?nNumberTxt=7711M',
        timeout=30
    )
    webpage.raise_for_status()
    soup = BeautifulSoup(webpage.text, "lxml")
    
    models = soup.find_all("td", attrs={"data-label":"Model"})
    manufacturers = soup.find_all("td", attrs={"data-label":"Manufacturer Name"})
    
    for model, manufacturer in zip(models, manufacturers):
        print(f"{model.get_text(strip=True)} - {manufacturer.get_text(strip=True)}")
except requests.exceptions.RequestException as e:
    print(f"请求出错: {e}")

3. 排查网络或使用代理

如果是地区封锁、ISP限制等网络层面问题,可尝试使用代理:

# 示例:配置HTTP代理(需替换为可用代理地址)
proxies = {
    'http': 'http://your-proxy-address:port',
    'https': 'https://your-proxy-address:port'
}

# 在请求中添加proxies参数
webpage = requests.get(
    'https://registry.faa.gov/AircraftInquiry/Search/NNumberResult?nNumberTxt=7711M',
    headers=headers,
    proxies=proxies,
    timeout=30
)

4. 应对反爬策略

政府网站通常有严格反爬,需注意:

  • 增加请求间隔(使用time.sleep()),避免频繁请求
  • 查看网站robots.txt,确认目标路径是否允许爬虫访问
  • 若IP被限制,可切换IP或使用代理池

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:13:14