【python实用小脚本-182】Python一键爬取今日新闻:5分钟生成Word+CSV——再也不用复制粘贴

Python一键爬取今日新闻:5分钟生成Word+CSV------再也不用复制粘贴

新闻爬虫, 自动导出, Word+CSV, 零配置, 瑞士军刀

故事开场:一把瑞士军刀救了早八的你

周一早八,老师布置任务:"整理今天国内外 50 条新闻要点做汇报。"

你打开浏览器,复制标题→作者→正文→粘贴到 Word,手指抽筋到第 5 条就崩溃。

这时,你从桌面掏出"小白瑞士军刀"------news_scraper.py。

双击运行,30 秒后:

  • news.txt:纯文本要点
  • news.docx:带格式的 Word
  • news.csv:Excel 直接透视

汇报材料一次性到位,老师点赞:"效率真高!"

痛点解决:再也不用一条条手动复制,5 分钟搞定今日新闻全格式。


完整代码(≤1000字符,直接展示)

python 复制代码
import requests, datetime as dt
from bs4 import BeautifulSoup
from docx import Document
import pandas as pd

today = dt.date.today()
page = requests.get("https://inshorts.com/en/read/")
soup = BeautifulSoup(page.content, 'html.parser')

headlines = [s.get_text() for s in soup.find_all('span', itemprop="headline")]
authors   = [s.get_text() for s in soup.find_all('span', class_="author")[::2]]
dates     = [s.get_text() for s in soup.find_all('span', class_="date")]
times     = [s.get_text() for s in soup.find_all('span', class_="time")]
bodies    = [s.get_text() for s in soup.find_all('div', itemprop="articleBody")]

final = [
    {'Title': h, 'Author': a, 'Date': d, 'Time': t, 'Details': b}
    for h, a, d, t, b in zip(headlines, authors, dates, times, bodies)
]

# 1) 纯文本
with open("news.txt", "w", encoding="utf-8") as f:
    f.write(f"NEWS {today}\n")
    for item in final:
        for k, v in item.items():
            f.write(f"{k}: {v}\n")
        f.write("\n")

# 2) Word
doc = Document()
doc.add_heading(f"NEWS {today}", 0)
for item in final:
    p = doc.add_paragraph("")
    for k, v in item.items():
        p.add_run(f"{k}: {v}\n")
doc.save("news.docx")

# 3) CSV
pd.DataFrame(final).to_csv("news.csv", index=False)

代码解析

功能块 1:一页爬全站

requests + BeautifulSoup 一句拿到 HTML,再用 find_all 批量抓标题/作者/正文。

python 复制代码
soup.find_all('span', itemprop="headline")

功能块 2:数据一键打包

把五条信息放进字典列表,zip 配对,避免索引错位。

python 复制代码
final = [{'Title': h, 'Author': a, ...} for h, a, d, t, b in zip(...)]

功能块 3:三格式同步输出

  • 纯文本:最轻量,手机也能看
  • Word:带标题、段落,汇报直接交
  • CSV:Excel 透视,图表随便做
python 复制代码
pd.DataFrame(final).to_csv("news.csv", index=False)

如果还想更厉害

扩展点子 1:自定义关键词过滤

加 --keyword 人工智能,只保留含关键词的新闻。

python 复制代码
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--keyword", default="")
args = parser.parse_args()
final = [f for f in final if args.keyword.lower() in f['Details'].lower()]

扩展点子 2:GUI 拖拽

用 tkinter 做个窗口,拖 CSV 或点按钮即可重新导出。

python 复制代码
import tkinter as tk, tkinter.filedialog as fd
root = tk.Tk()
csv_path = fd.askopenfilename(filetypes=[("CSV", "*.csv")])
df = pd.read_csv(csv_path)

总结

news_scraper.py 这把 30 行瑞士军刀,把"开网页→复制→粘贴→排版"四步压缩成"双击→收工"。

你无需安装任何大型软件,就能把实时新闻变成 TXT、Word、CSV 三件套。

再加两行参数或 GUI,它就从脚本升级成新闻工厂。

下次再被老师/老板要"今日要点",直接甩文件!

源码获取

完整代码已开源,包含详细的注释文档:

🔗 GitCode仓库 https://gitcode.com/laonong-1024/python-automation-scripts

📥 备用下载 https://pan.quark.cn/s/654cf649e5a6 提取码:f5VG

相关推荐
sunshine22 girl14 小时前
Java学习六 Java常见API-1-Radom随机数
java·开发语言·学习
可乐鸡翅yeah_14 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
天赐范式14 小时前
天赐范式第185天:让漂变开始定量——扫N看选择主导边界
python·信噪比·数字生命·天赐范式·动态运行时·种群大小·遗传漂变
潼心1412o14 小时前
C++初阶(长期更新)第6讲:类和对象(下)
开发语言·c++·算法
Jo乔戈里14 小时前
免费本地搜图软件
图像处理·python·搜索引擎·ai
for_ever_love__14 小时前
字符串处理——f-string、切片与正则,清洗文本的第一把刀
python·大模型·虚拟环境
夜晚回家15 小时前
Python 零基础入门 | 输入的数字为什么不能直接算
开发语言·python
时间的拾荒人15 小时前
Qt 事件机制全解析:从事件处理到事件过滤器
开发语言·qt·面试
于指尖飞舞15 小时前
java面试题总结
java·开发语言
打工仔折腾 AI15 小时前
把AI Agent托管在家用电脑:UU远程终端与端口映射实测记录
人工智能·后端·python·langchain·ai agent 实战