爬取网站内容转为markdown 和 html(通常模式)

我们遇到一些自己喜欢内容,想保存下来,手动复制粘贴很麻烦,我们使用 python 来爬取这些内容。

一、代码

downlod.py

python 复制代码
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

# 目标网页(可以更改)
url = "https://www.baidu.com"

# 指定保存的文件夹和 Markdown 文件名
save_folder = "web_md"
os.makedirs(save_folder, exist_ok=True)
md_filename = os.path.join(save_folder, "page.md")
images_folder = os.path.join(save_folder, "images")
os.makedirs(images_folder, exist_ok=True)

# 获取网页内容
response = requests.get(url)
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, "html.parser")

# 打开 Markdown 文件
with open(md_filename, "w", encoding="utf-8") as md_file:
    md_file.write(f"# {soup.title.string.strip()}\n\n")

    for element in soup.body.find_all(["p", "a", "code", "img", "h1", "h2", "h3", "h4", "h5", "h6", "pre"], recursive=True):
        if element.name == "h1":
            md_file.write(f"\n# {element.get_text(strip=True)}\n\n")
        elif element.name == "h2":
            md_file.write(f"\n## {element.get_text(strip=True)}\n\n")
        elif element.name == "h3":
            md_file.write(f"\n### {element.get_text(strip=True)}\n\n")
        elif element.name == "h4":
            md_file.write(f"\n#### {element.get_text(strip=True)}\n\n")
        elif element.name == "p":
            md_file.write(f"{element.get_text(strip=True)}\n\n")
        elif element.name == "a":
            link_text = element.get_text(strip=True)
            href = urljoin(url, element["href"])
            md_file.write(f"[{link_text}]({href})\n\n")
        elif element.name == "code":
            md_file.write(f"```\n{element.get_text(strip=True)}\n```\n\n")
        elif element.name == "pre":
            md_file.write(f"```\n{element.get_text()}\n```\n\n")
        elif element.name == "img":
            img_url = urljoin(url, element["src"])
            img_name = os.path.basename(img_url).split("?")[0]
            img_path = os.path.join(images_folder, img_name)
            try:
                img_data = requests.get(img_url).content
                with open(img_path, "wb") as img_file:
                    img_file.write(img_data)
                md_file.write(f"![{img_name}](images/{img_name})\n\n")
            except Exception as e:
                print(f"下载 {img_url} 失败: {e}")

print(f"Markdown 文件已保存至 {md_filename}")

二、安装环境

  1. 安装 python
  2. 管理员运行 cmd,最好挂梯子
bash 复制代码
pip install requests beautifulsoup4
  1. downlod.py 同级目录下运行cmd
bash 复制代码
python download.py



三、vscode + markdown all in one

  1. 安装 vscode
  2. vscode 的扩展安装 markdown all in one
  3. vscode 打开下载的 md 文件
  4. 点击右上角的 预览 按钮,即可预览转换后的 md 文件
  5. ctrl + shift + p,打开命令模式
  6. 输入 markdown ,使用这个命令,可以将md转为 html 格式

相关推荐
AC赳赳老秦19 小时前
OpenClaw 多源采集公开行业数据:从原始信息到研究报告初稿的自动化实践
java·c语言·c++·python·php·deepseek·openclaw
Highcharts19 小时前
全功能施工项目管理甘特图 Demo:任务依赖箭头、当前日期标线、周末高亮、分组项目可视化
html·数据可视化
程序员雷欧19 小时前
AQS深度解析
开发语言·python
玩三国杀玩的19 小时前
Pytorch-c++-CUDA
c++·pytorch·python·深度学习
Albert Edison19 小时前
PyCharm 字体大小设置
ide·python·pycharm
IMPYLH20 小时前
HTML 的 <h1>–<h6> 元素
前端·javascript·html
叠层归一研究院20 小时前
如何用程序搭建一个 AGI 种子系统(一):从向量种子到无限生长引擎
人工智能·python·算法·机器学习·agi
IMPYLH20 小时前
HTML 的 <head> 元素
前端·html
l12586520 小时前
# RAG重排序实战:硅基流动bge-reranker-v2-m3在线API vs 本地CrossEncoder,一篇讲透两种方案
数据库·人工智能·python·深度学习·算法·机器学习·langchain
梦醒沉醉21 小时前
2、HTML入门——HTML元信息
html