arxiv_search.py
#!/usr/bin/env python3
import arxiv
import argparse
import json
def main():
parser = argparse.ArgumentParser(description="Search arXiv papers")
parser.add_argument("query", help="Search query")
parser.add_argument("--max-results", type=int, default=10, help="Maximum number of results")
parser.add_argument("--category", help="Category filter")
args = parser.parse_args()
# 构建搜索查询
search_query = args.query
if args.category:
search_query = f"cat:{args.category} AND {search_query}"
# 搜索论文
search = arxiv.Search(
query=search_query,
max_results=args.max_results,
sort_by=arxiv.SortCriterion.Relevance
)
# 输出结果
results = []
for result in search.results():
paper = {
"id": result.get_short_id(),
"title": result.title,
"authors": [str(author) for author in result.authors],
"summary": result.summary,
"published": result.published.isoformat(),
"updated": result.updated.isoformat(),
"pdf_url": result.pdf_url,
"categories": result.categories
}
results.append(paper)
print(json.dumps(results, indent=2))
if __name__ == "__main__":
main()