如何使用Python爬取CBOE网站表格内的txt文件并本地保存
实现方法
你已经完成了列表页解析和目标a标签定位,后续按以下操作即可完成文件下载保存:
- 从a标签对象中提取
href属性的相对路径,和列表页基础地址拼接为完整的文件下载URL,不要手动硬编码拼接路径,用标准库方法适配路径格式避免出错 - 携带合法请求头访问下载URL,获取文本文件内容,建议加请求状态校验,请求失败直接抛出异常方便排查
- 以文本写入模式打开本地文件,将获取到的文件内容写入即可,文件名直接取a标签的文本内容,和站点显示的文件名保持一致
完整可运行代码
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin BASE_URL = "https://www.cboe.com/us/equities/market_statistics/corporate_action/" # 模拟浏览器请求头,避免被站点反爬策略拦截 HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" } # 拉取企业行动列表页 resp = requests.get(BASE_URL, headers=HEADERS) resp.raise_for_status() soup = BeautifulSoup(resp.content, "html5lib") # 定位目标a标签 table = soup.find("table") target_link_tag = table.tbody.find("tr").find("td").find("a") # 拼接完整下载地址 relative_path = target_link_tag.get("href") download_url = urljoin(BASE_URL, relative_path) save_file_name = target_link_tag.text.strip() # 拉取目标文本文件 file_resp = requests.get(download_url, headers=HEADERS) file_resp.raise_for_status() # 写入本地文件 with open(save_file_name, "w", encoding="utf-8") as f: f.write(file_resp.text) print(f"文件已成功保存,路径:{save_file_name}")
注意:如果写入时遇到乱码问题,可以将
open方法的encoding参数替换为file_resp.encoding,自动适配站点返回的文件编码。
内容的提问来源于stack exchange,提问作者Sambhab Sau
相关产品推荐
相关产品推荐

