如何使用BeautifulSoup将每篇文章导出至独立Word文件?
将抓取的文章逐个导出为独立Word文件的解决方案
首先安装生成Word文件所需的依赖库:
pip install python-docx requests beautifulsoup4修改后的完整代码,包含Word生成、文件名处理和异常容错:
import requests from bs4 import BeautifulSoup import time from docx import Document import re # 清理文件名中的非法字符 def sanitize_filename(filename): return re.sub(r'[\\/*?:"<>|]', '', filename) # 遍历所有目标页面 for i in range(1, 199): URL = "https://trumpwhitehouse.archives.gov/remarks/page/" r = requests.get(URL + str(i)) soup = BeautifulSoup(r.content, 'lxml') # 提取当前页面的所有文章链接 links = [] for news in soup.findAll('h2', class_='briefing-statement__title'): links.append(news.a['href']) # 逐个处理文章链接,生成独立Word文件 for link in links: try: page = requests.get(link) page.raise_for_status() # 捕获HTTP请求错误 sp = BeautifulSoup(page.text, "lxml") # 获取文章标题作为文件名 title = sp.find("h1", class_="page-title").get_text(strip=True) safe_title = sanitize_filename(title) # 提取文章正文段落 article_paras = sp.find("div", class_="page-content").find_all("p") # 创建Word文档并写入内容 doc = Document() doc.add_heading(title, level=1) for para in article_paras: para_text = para.get_text(strip=True) if para_text: # 跳过空段落 doc.add_paragraph(para_text) # 保存文档 doc.save(f"{safe_title}.docx") print(f"已生成文件:{safe_title}.docx") time.sleep(1) # 单篇文章处理后短暂休眠 except Exception as e: print(f"处理链接 {link} 失败:{str(e)}") continue time.sleep(3) # 每页处理后休眠核心改动说明:
- 引入
python-docx库实现Word文档的创建与保存 - 新增文件名清理函数,避免标题中的特殊字符导致保存失败
- 以文章标题作为文件名,保证文件的辨识度
- 添加异常捕获逻辑,单个链接出错不会中断整个爬取流程
- 过滤空段落,优化生成的Word文档内容质量
- 细化休眠策略,降低被反爬机制拦截的风险
- 引入
内容的提问来源于stack exchange,提问作者usman Abbasi
相关产品推荐
相关产品推荐

