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

通过AWS ApiGateway用ip-rotator爬取Google scholar报BadRequestException错误

错误根因

你遇到的Invalid HTTP endpoint specified for URI报错,是因为初始化ApiGateway时传入的地址包含了查询参数。AWS ApiGateway的PutIntegration接口要求集成的HTTP端点必须为不带查询参数的基础路径,你将包含?hl=en&as_sdt=0%2C5&q={}&btnG=的完整查询地址传入初始化接口,不符合AWS接口校验规则。最初几次运行未报错是临时校验未触发,后续校验生效就会抛出异常。

修复步骤
  • 拆分基础域名和查询模板,不要将查询参数放在ApiGateway初始化的地址中
  • ApiGateway初始化仅传入基础域名,会话挂载也对应绑定基础域名即可,IP轮换逻辑会自动覆盖该域名下的所有请求
  • 发起请求时再拼接完整的带查询参数的请求地址

修复后的初始化代码

# 拆分基础域名和查询模板
base_url = 'https://scholar.google.com'
query_template = '/scholar?hl=en&as_sdt=0%2C5&q={}&btnG='

# 初始化网关仅传入基础域名
gateway = ApiGateway(base_url,
                     access_key_id="KEY", access_key_secret="SECRET_KEY")
gateway.start()

修复后的会话挂载代码

session = requests.Session()
# 挂载基础域名,同域名下所有请求都会自动走IP轮换
session.mount(base_url, gateway)

修复后的请求代码

header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}

search_string = '{}+and+{}+and+{}+and+{}'.format('term1','term2','term3','term4')
# 拼接完整请求地址
url = base_url + query_template.format(search_string)
print(url)

response = session.get(url,headers=header)
tree = BeautifulSoup(response.content,'lxml')
result = tree.find('div',id='gs_ab_md')

print(response.status_code)
print(result.text)
print(len(result.text))
number=[int(s.replace('.','').replace(',','')) for s in result.text.split() \
                if s.replace('.','').replace(',','').isdigit()]

网关销毁代码无需调整,执行gateway.shutdown()即可正常清理资源。

额外注意事项
  • 若此前运行时未正常执行销毁逻辑,会导致AWS后台残留无效的ApiGateway资源,建议先登录AWS控制台进入ApiGateway服务手动删除残留资源,避免占用配额导致后续报错。
  • AWS ApiGateway有调用次数配额限制,爬取时请控制请求速率,避免触发配额拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:27:03