new_recommendation / test_openalex_user_agent.py
wujian123's picture
Upload all project files
3c6b551
#!/usr/bin/env python3
"""
测试OpenAlex API的新User-Agent
"""
import requests
import json
def test_openalex_with_new_user_agent():
"""测试新的User-Agent是否有效"""
url = "https://api.openalex.org/works"
# 使用新的User-Agent
headers = {
'User-Agent': 'AcademicReviewerSystem/1.0 (mailto:[email protected])'
}
# 测试简单查询
params = {
"search": "machine learning",
"per-page": 3,
"sort": "cited_by_count:desc"
}
print("=== 测试OpenAlex API新User-Agent ===")
print(f"User-Agent: {headers['User-Agent']}")
print(f"查询: {params['search']}")
print("-" * 50)
try:
response = requests.get(url, params=params, headers=headers, timeout=30)
print(f"状态码: {response.status_code}")
if response.status_code == 200:
data = response.json()
items = data.get("results", [])
total_results = data.get("meta", {}).get("count", 0)
print(f"成功! 总命中数: {total_results}")
print(f"返回结果数: {len(items)}")
print()
for i, item in enumerate(items, 1):
title = item.get('title', 'N/A')
cited_by_count = item.get('cited_by_count', 0)
pub_year = item.get('publication_year', 'N/A')
print(f"{i}. {title}")
print(f" 被引用次数: {cited_by_count}")
print(f" 发表年份: {pub_year}")
print()
return True
else:
print(f"失败: {response.text}")
return False
except Exception as e:
print(f"异常: {str(e)}")
return False
def test_different_queries():
"""测试不同的查询"""
url = "https://api.openalex.org/works"
headers = {
'User-Agent': 'AcademicReviewerSystem/1.0 (mailto:[email protected])'
}
test_queries = [
"machine learning",
"CRISPR",
"cryo-electron microscopy"
]
print(f"\n=== 测试不同查询 ===")
print("=" * 50)
for query in test_queries:
print(f"\n--- 查询: {query} ---")
params = {
"search": query,
"per-page": 2,
"sort": "cited_by_count:desc"
}
try:
response = requests.get(url, params=params, headers=headers, timeout=30)
print(f"状态码: {response.status_code}")
if response.status_code == 200:
data = response.json()
items = data.get("results", [])
print(f"成功! 返回 {len(items)} 个结果")
if items:
for i, item in enumerate(items, 1):
title = item.get('title', 'N/A')[:50] + '...' if len(item.get('title', '')) > 50 else item.get('title', 'N/A')
cited_count = item.get('cited_by_count', 0)
print(f" {i}. {title} (引用量: {cited_count})")
else:
print(f"失败: {response.text}")
except Exception as e:
print(f"异常: {str(e)}")
print("-" * 30)
if __name__ == "__main__":
# 基本测试
success = test_openalex_with_new_user_agent()
if success:
# 如果基本测试成功,测试更多查询
test_different_queries()
else:
print("\n基本测试失败,请检查User-Agent设置")
print("\n" + "=" * 50)
print("测试完成")