
图片来源:作者 | ChatGPT
#引言
在数据科学项目中,获取真实世界的数据往往是最具挑战性的一环。虽然容易找到一些玩具数据集,但要获得高质量或实时的数据,通常需要利用API接口,或者构建定制化的网络爬虫管道来从网络中提取信息。本文将分享我个人最钟爱的10个免费API接口,它们是我日常用于数据收集、数据集成以及构建AI代理的得力工具。这些API被划分为五大类,涵盖了可靠的数据存储库、网络爬取以及网页搜索等多个方面,旨在帮助您快速选择合适的工具,从而更快地从数据中提取有价值的洞察。
#基础数据存储库
基础数据存储库是一种社区驱动的平台,不同的组织和开源贡献者在此向全球共享他们的数据集。通过简单的命令,您就可以轻松地访问这些数据集,并将其用于您的项目。
//1. Kaggle API
在进行数据科学项目时,Kaggle 的数据集广受欢迎。与其手动下载,不如构建一个数据管道,让它自动下载数据集、解压缩,并加载到您的工作区。这些数据集由开源社区共享,供所有人使用。要开始使用,只需从您的Kaggle账户生成一个API密钥,并将其设置为环境变量。之后,您就可以在终端中运行以下命令。Kaggle还提供了一个Python SDK,以便您更轻松地将其集成到代码中。
kaggle datasets download -d kingabzpro/world-vaccine-progress -p data --unzip
//2. Hugging Face CLI
与Kaggle类似,Hugging Face 也是一个数据科学和机器学习社区,人们在这里共享数据集、模型和演示。您可以轻松安装Hugging Face CLI,并通过CLI命令或Python代码将其集成到您的工作流程中。这两种方法都允许您在无需API密钥的情况下下载数据集。仅当数据集受到访问限制时才需要API密钥。
hf download kingabzpro/dermatology-qa-firecrawl-dataset
#网页与爬取API
网络蕴含着种类繁多的数据。如果您无法在上述平台找到所需信息,可能就需要通过网页爬取或使用网页搜索API来整理自己的数据。
//3. Firecrawl
Firecrawl 提供了一个API,用于从网站提取内容并将其转换为Markdown格式,以便更轻松地与AI进行集成。它还附带了一个集成了大型语言模型(LLM)的爬取和提取API,提供了更高级的网页抓取选项。这个API是必备工具,我每天都用它来创建数据并将其集成到我的AI项目中。
curl -s -X POST "https://api.firecrawl.dev/v2/scrape"
-H "Authorization: Bearer $FIRECRAWL_API_KEY"
-H "Content-Type: application/json"
-d '{
"url": "https://abid.work",
"formats": ["markdown", "html"]
}'
//4. Tavily
Tavily 是一个快速的网页搜索API,每月提供1,000次免费搜索请求,既准确又迅速。您可以用它来创建数据集,将其集成到您的AI项目中,或者作为简单的搜索API来满足您的开发需求。
curl --request POST
--url https://api.tavily.com/search
--header "Authorization: Bearer <token>"
--header "Content-Type: application/json"
--data '{
"query": "who is Leo Messi?",
"auto_parameters": false,
"topic": "general",
"search_depth": "basic",
"chunks_per_source": 3,
"max_results": 1,
"days": 7,
"include_answer": true,
"include_raw_content": true,
"include_images": false,
"include_image_descriptions": false,
"include_favicon": false,
"include_domains": [],
"exclude_domains": [],
"country": null
}'
#地理空间与气象API
如果您正在寻找气象和地理空间数据集,您会发现这些信息是不断变化的。因此,您需要通过API实时访问这些数据集。
//5. OpenWeatherMap
OpenWeatherMap 是一项通过API提供全球气象数据的服务,涵盖当前天气状况、预报、临近预报、历史记录,甚至精确到每分钟的超本地降水预报。
curl "https://api.openweathermap.org/data/2.5/weather?q=London&appid=YOUR_API_KEY&units=metric"
//6. OpenStreetMap
OpenStreetMap 提供全球地图数据,而 **Overpass API** 则是一个只读的网页数据库,提供OpenStreetMap中自定义选定的部分数据,并可通过Overpass QL进行查询。下面的示例展示了如何在伦敦的一个小范围内获取咖啡馆的节点信息。
curl -G "https://overpass-api.de/api/interpreter"
--data-urlencode 'data=[out:json];node["amenity"="cafe"](51.50,-0.15,51.52,-0.10);out;'
#金融市场数据API
如果您正在进行金融项目,并需要股票、加密货币以及其他金融相关信息和新闻的实时数据,那么金融市场数据API将是强烈推荐的选择。
//7. Alpha Vantage
Alpha Vantage 是一个金融数据平台,提供免费API,用于获取股票、外汇、加密货币、大宗商品和期权的实时及历史市场数据,并支持JSON或CSV输出。它还提供盘中、日、周和月等时间间隔的图表就绪型时间序列数据,以及50多种用于分析的技术指标。
curl "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=IBM&apikey=YOUR_API_KEY"
//8. Yahoo Finance
许多初学者和专业人士使用 **yfinance** API来获取股票报价、历史时间序列数据、股息和拆分,以及基本元数据。这使他们能够创建分析就绪的数据框,用于快速原型开发和课堂项目。**Yahoo Finance** 提供免费的股票报价、新闻、投资组合工具以及国际市场覆盖,使用户能够免费探索广泛的市场数据。
import yfinance as yf
print(yf.download("AAPL", period="1y").head())
#社交与社区数据API
如果您正在进行一个项目,旨在分析来自顶级社交媒体平台的文本和社区对话,那么这些API将为您提供轻松访问真实社交媒体数据的途径。
//9. Reddit
Reddit 提供了一个丰富的、由社区驱动的数据源,而 **Python Reddit API Wrapper (PRAW)** 则简化了在Python中访问官方Reddit API的过程,可以轻松完成获取帖子、评论和子版块元数据等任务。PRAW通过在底层向Reddit的API发送请求来工作,常用于教学和研究中,以收集讨论串进行分析。
import praw
r = praw.Reddit(
client_id="ID",
client_secret="SECRET",
user_agent="myapp:ds-project:v1 (by u/yourname)"
)
print([s.title for s in r.subreddit("Python").hot(limit=5)])
//10. X
X(前身为Twitter)提供了一个开发者平台,包含用于用户和内容检索的REST端点,以及实时数据流选项。访问通常需要身份验证,遵守速率限制和政策,并选择适合您的数据量和使用场景的访问级别。
curl -H "Authorization: Bearer YOUR_BEARER_TOKEN"
"https://api.x.com/2/users/by/username/jack"
#总结
这些API提供了免费访问那些通常难以获取的数据的途径,极大地增强了您收集网络数据或改进网页爬取工作的能力,从而创建定制化的数据集。我强烈建议您收藏本文,以便在需要高质量、实时网络数据时查阅。通过充分利用这些API,您将能够解锁宝贵的见解,这将有力地支持您的研究和分析工作。
