Spaces:
Sleeping
Sleeping
| #!/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("测试完成") | |