好的,Python 实现数据采集(通常指网络爬虫或从 API 获取数据)有多种方法。以下是三种常用且核心的方法:方法 1:使用requests+BeautifulSoup(适用于静态 HTML 页面)这是最基础和常用的组合,用于抓取静态网页内容。requests: 用于向目标 URL 发送 HTTP 请求(GET/POST 等),获取网页的 HTML 源代码。BeautifulSoup: 用于解析获取到的 HTML 或 XML 文档,提取其中的结构化数据(如文本、链接、表格等)。示例代码:import requests from bs4 import BeautifulSoup # 1. 发送请求获取页面 url = 'https://example.com' response = requests.get(url) # 检查请求是否成功 if response.status_code == 200: # 2. 解析 HTML soup = BeautifulSoup(response.text, 'html.parser') # 使用 'html.parser' 解析器 # 3. 提取数据 (示例:提取所有标题) titles = soup.find_all('h1') # 找到所有 h1 标签 for title in titles: print(title.get_text()) # 打印标题的文本内容 else: print(f"请求失败,状态码: {response.status_code}")优点:简单易学,速度快,资源消耗低。缺点:无法处理由 JavaScript 动态渲染的内容。方法 2:使用Selenium(适用于动态渲染页面)当网页内容是通过 JavaScript 在浏览器中动态生成时,requests只能获取到初始 HTML(不包含 JS 执行后的结果)。Selenium可以模拟真实浏览器的行为。Selenium: 它是一个自动化测试工具,但广泛应用于爬虫领域。它通过 WebDriver 控制浏览器(如 Chrome, Firefox)加载页面、执行 JavaScript、与页面元素交互。WebDriver: 需要下载对应浏览器的驱动(如chromedriver对应 Chrome)。示例代码:from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 设置浏览器选项(可选:无头模式节省资源) options = webdriver.ChromeOptions() options.add_argument('--headless') # 无头模式,不显示浏览器窗口 options.add_argument('--disable-gpu') # 初始化 WebDriver (需提前下载 chromedriver 并配置 PATH 或指定路径) driver = webdriver.Chrome(options=options) # 或者使用 webdriver.Firefox() # 访问目标 URL driver.get('https://example.com') # 等待特定元素加载完成(显式等待) try: element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "dynamicContent")) ) # 元素加载完成后,提取数据 dynamic_text = element.text print(dynamic_text) finally: # 关闭浏览器 driver.quit()优点:能处理 JavaScript 渲染的动态内容,可以模拟用户操作(点击、输入)。缺点:速度较慢,资源消耗(内存、CPU)较大。方法 3:调用 API (适用于有提供接口的数据源)许多网站或服务(如社交媒体、新闻聚合、天气服务)提供公开或需要认证的 API (Application Programming Interface)。直接调用 API 获取数据通常是更高效、更规范的方式。寻找 API: 查看目标网站的开发者文档,寻找其提供的 API 端点。发送请求: 使用requests库向 API 的 URL 发送 HTTP 请求(GET/POST)。处理响应: API 通常返回结构化的数据格式,如 JSON 或 XML。使用 Python 内置的json模块解析 JSON 数据最为常见。示例代码:import requests import json # API 端点 URL (示例) api_url = 'https://api.example.com/data' # 可能需要的参数 (如 API Key, 查询参数) params = { 'param1': 'value1', 'api_key': 'YOUR_API_KEY' # 如果 API 需要认证 } # 发送 GET 请求到 API response = requests.get(api_url, params=params) if response.status_code == 200: # 解析返回的 JSON 数据 data = response.json() # 直接解析为 Python 字典/列表 # 处理和使用解析后的数据 print(json.dumps(data, indent=4)) # 漂亮打印 JSON # 或者访问特定字段: print(data['key']) else: print(f"API 请求失败,状态码: {response.status_code}")优点: