爬取網站內容轉為markdown 和 html(通常模式)

我們遇到一些自己喜歡內容,想保存下來,手動復制粘貼很麻煩,我們使用 python 來爬取這些內容。

一、代碼

downlod.py

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).contentwith 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,最好掛梯子
pip install requests beautifulsoup4

在這里插入圖片描述
3. 在 downlod.py 同級目錄下運行cmd

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 格式
    在這里插入圖片描述
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70294.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70294.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70294.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

. Spring MVC

(1)MVC 設計模式 Model(模型):負責存儲數據和業務邏輯。在 Spring MVC 中,模型通常是 JavaBean,用于封裝數據。 View(視圖):負責展示數據給用戶。可以是 JSP…

高效執行自動化用例:分布式執行工具pytest-xdist實戰!

01、聲明 在介紹pytest-xdist時,不講任何原理,需要看原理的請移至官方:https://pypi.org/project/pytest-xdist/ 當我們自動化測試用例非常多的時候, 一條條按順序執行會非常慢,pytest-xdist的出現就是為了讓自動化測…

【ISO 14229-1:2023 UDS診斷全量測試用例清單系列:第十八節】

ISO 14229-1:2023 UDS診斷服務測試用例全解析(ResponseOnEvent_0x86服務) 作者:車端域控測試工程師 更新日期:2025年02月14日 關鍵詞:UDS協議、0x86服務、事件響應、ISO 14229-1:2023、ECU測試 一、服務功能概述 0x86…

deepseek多列數據對比,聯想到excel的高級篩選功能

目錄 1 業務背景 ?2 deepseek提示詞輸入 ?3 聯想分析 4 EXCEL高級搜索 1 業務背景 系統上線的時候經常會遇到一個問題,系統導入的數據和線下的EXCEL數據是否一致,如果不一致,如何快速找到差異值,原來腦海第一反應就是使用公…

TailwindCss的vue3安裝使用

按照官網的安裝教程,屬性最后無法生效,這是自我改良版,添加了額外步驟,但是每次引入新的tailwindcss屬性 需要重新跑一次項目 npm下載tailwindcss npm install -D tailwindcss npx初始化tailwind配置 npx tailwindcss init 此時根…

個人博客測試報告

一、項目背景 個人博客系統采用前后端分離的方法來實現,同時使用了數據庫來存儲相關的數據,同時將其部署到云服務器上。前端主要有四個頁面構成:登錄頁、列表頁、詳情頁以及編輯頁,以上模擬實現了最簡單的個人博客系統。其結合后…

Python----數據結構(單鏈表:節點,是否為空,長度,遍歷,添加,刪除,查找)

一、鏈表 鏈表是一種線性數據結構,由一系列按特定順序排列的節點組成,這些節點通過指針相互連接。每個節點包含兩部分:元素和指向下一個節點的指針。其中,最簡單的形式是單向鏈表,每個節點含有一個信息域和一個指針域&…

夜鶯監控發布 v8.beta5 版本,優化 UI,新增接口認證方式便于鑒權

以防讀者不了解夜鶯,開頭先做個介紹: 夜鶯監控,英文名字 Nightingale,是一款側重告警的監控類開源項目。類似 Grafana 的數據源集成方式,夜鶯也是對接多種既有的數據源,不過 Grafana 側重在可視化&#xff…

什么是Embedding、RAG、Function calling、Prompt engineering、Langchain、向量數據庫? 怎么使用

什么是Embedding、RAG、Function calling、Prompt engineering、Langchain、向量數據庫? 怎么使用 目錄 什么是Embedding、RAG、Function calling、Prompt engineering、Langchain、向量數據庫? 怎么使用Embedding(嵌入)RAG(檢索增強生成)Function calling(函數調用)Pr…

SQLMesh 系列教程5- 詳解SQL模型

本文將詳細介紹 SQLMesh 的 SQL 模型組成要素及其在實際項目中的應用。SQLMesh 是一個強大的數據工程工具,其 SQL 模型由 MODEL DDL、預處理語句、主查詢、后處理語句以及可選的 ON VIRTUAL UPDATE 語句組成。我們將通過一個電商平臺每日銷售報告的實例,…

DeepSeek 接入PyCharm實現AI編程!(支持本地部署DeepSeek及官方DeepSeek接入)

前言 在當今數字化時代,AI編程助手已成為提升開發效率的利器。DeepSeek作為一款強大的AI模型,憑借其出色的性能和開源免費的優勢,成為許多開發者的首選。今天,就讓我們一起探索如何將DeepSeek接入PyCharm,實現高效、智…

從駕駛員到智能駕駛:汽車智能化進程中的控制與仿真技術

在汽車技術持續演進的歷程中,人類駕駛員始終是一個極具研究價值的智能控制系統“原型”。駕駛員通過視覺感知、行為決策與操作執行的閉環控制,將復雜的駕駛任務轉化為車輛的實際動作,同時動態適應道路環境的變化。這一過程不僅體現了高度的自…

Spring Boot項目的基本設計步驟和相關要點介紹

以下是一個關于Spring Boot項目的基本設計步驟和相關要點介紹,我們以一個簡單的示例應用——員工管理系統為例進行說明: 一、項目概述 員工管理系統旨在實現對公司員工信息的有效管理,包括員工基本信息錄入、查詢、更新以及刪除等功能。通過Spring Boot框架來快速搭建后端…

【Java】泛型與集合篇(一)

泛型與集合(一) 泛型泛型的核心作用泛型類型(類)定義與使用類型參數命名約定泛型方法定義與調用與泛型類的區別通配符上界通配符下界通配符有界類型參數類型擦除集合框架核心接口Collection 接口Map 接口Collection 接口操作的常用方法基本操作批量操作數組操作流操作方法L…

HarmonyOS組件之Tabs

Tabs 1.1概念 Tabs 視圖切換容器,通過相適應的頁簽進行視圖頁面的切換的容器組件每一個頁簽對應一個內容視圖Tabs擁有一種唯一的子集元素TabContent 1.2子組件 不支持自定義組件為子組件,僅可包含子組件TabContent,以及渲染控制類型 if/e…

華為FusionCompute虛擬化平臺

一、華為FusionCompute虛擬化套件介紹 華為FusionCompute虛擬化套件是業界領先的虛擬化解決方案,能夠幫助客戶帶來如下的價值,從而大幅提升數據中心基礎設施的效率。 幫助客戶提升數據中心基礎設施的資源利用率;幫助客戶成倍縮短業務上線周期…

使用apt-rdepends制作軟件離線deb安裝包

使用apt-rdepends制作軟件離線deb安裝包 除基礎軟件外,還要獲取軟件依賴包。 依賴包工具安裝 apt-get install apt-rdependsapt-rdepends工具使用 使用apt-rdepends工具,遞歸方式分析軟件依賴,下載軟件包本體,和依賴包。制作時…

【ISO 14229-1:2023 UDS診斷(ECU復位0x11服務)測試用例CAPL代碼全解析⑩】

ISO 14229-1:2023 UDS診斷【ECU復位0x11服務】_TestCase10 作者:車端域控測試工程師 更新日期:2025年02月18日 關鍵詞:UDS診斷協議、ECU復位服務、0x11服務、ISO 14229-1:2023 TC11-010測試用例 用例ID測試場景驗證要點參考條款預期結果TC…

什么是Scaling Laws(縮放定律);DeepSeek的Scaling Laws

什么是Scaling Laws(縮放定律) Scaling Laws(縮放定律)在人工智能尤其是深度學習領域具有重要意義,以下是相關介紹及示例: 定義與內涵 Scaling Laws主要描述了深度學習模型在規模(如模型參數數量、訓練數據量、計算資源等)不斷擴大時,模型性能與這些規模因素之間的…

大一計算機的自學總結:前綴樹(字典樹、Trie樹)

前言 前綴樹&#xff0c;又稱字典樹&#xff0c;Trie樹&#xff0c;是一種方便查找前綴信息的數據結構。 一、字典樹的實現 1.類描述實現 #include <bits/stdc.h> using namespace std;class TrieNode { public:int pass0;int end0;TrieNode* nexts[26]{NULL}; };Tri…