Python爬蟲實戰:詩詞名句網《三國演義》全集

Beautiful Soup實戰案例:爬取"詩詞名句網"

目標

爬取"詩詞名句網"上的古典文學作品內容,包括書籍目錄和章節內容,并將每章內容獨立保存為文本文件。

目標網址: 《三國演義》全集在線閱讀_史書典籍_詩詞名句網

要求

  1. 書籍目錄管理:目錄名基于書籍名稱動態生成

  2. 目錄頁解析: 下載書籍目錄頁HTML、解析章節列表結構

  3. 章節信息提取: 構建完整章節URL(基礎URL + 相對路徑)

  4. 章節內容獲取: 下載各章節HTML內容

  5. 內容提取與處理: BS作為主要解析器、提取純文本內容(去除HTML標簽)

  6. 文件存儲規范: 文件名安全處理、使用章節名稱作為文件名

  7. 進度反饋: 目錄創建成功通知 、文件寫入成功確認等

代碼

import requests
from bs4 import BeautifulSoup
import re
import os
from urllib.parse import urljoin
?
# 創建目錄
if not os.path.exists('三國演義'):os.mkdir('三國演義')
?
# 目標網址
url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
?
# 偽裝瀏覽器
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0'
}
?
# 發送請求,獲取響應
response = requests.get(url, headers=headers)
# 進行編碼
response.encoding = 'utf-8'
# 轉成html對象,從而提取數據
html = BeautifulSoup(response.text,'lxml')
# 得到對象
tablis = html.select('a[class="tabli"]')
# 循環提取數據
for tabli in tablis:my_dict = {'章節名稱':'','詳情頁地址':''}tabli_name = tabli.get_text().strip()if tabli_name:# 將章節名稱進行特殊符號的替換safe_name = re.sub(r'[\\/*?<|>]','',tabli_name)my_dict['章節名稱'] = safe_nametabli_href = tabli.attrs.get('href')if tabli_href:# 建立完整的url地址new_href = urljoin('https://www.shicimingju.com/',tabli_href)my_dict['詳情頁地址'] = new_href# 發送二次請求,獲取詳情內容response_content = requests.get(new_href,headers=headers)response_content.encoding = 'utf-8'# 轉成html格式content_html = BeautifulSoup(response_content.text,'lxml')# 獲取文本對象div_content = content_html.select('div[class="text p_pad"]')# 提取文章內容content = div_content[0].get_text()
?# 寫入文件file_name = f'{safe_name}.txt'with open(os.path.join('三國演義',file_name),'w',encoding='utf-8') as f:f.write(content)print(my_dict)

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

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

相關文章

AWS CAF:企業云轉型的戰略指南

在數字化轉型的大潮中&#xff0c;企業正面臨前所未有的變革壓力。如何利用云計算驅動業務創新、提升IT敏捷性、優化成本結構&#xff0c;已成為眾多企業迫切需要解決的關鍵課題。然而&#xff0c;云遷移并不是簡單地將本地應用“復制”到云上&#xff0c;它是一項牽涉企業組織…

【Redis】Linux 配置Redis

一、Redis介紹 Redis&#xff08;Remote Dictionary Server&#xff09;是一款開源的、高性能的鍵值對&#xff08;Key-Value&#xff09;存儲數據庫&#xff0c;由 Salvatore Sanfilippo 于 2009 年開發&#xff0c;采用 ANSI C 語言編寫。它以內存存儲為核心&#xff0c;支持…

MongoDB數據庫高并發商業實踐優化·運行優化之不可使用root賬戶進行MongoDB運行-優雅草卓伊凡

MongoDB數據庫高并發商業實踐優化運行優化之不可使用root賬戶進行MongoDB運行-優雅草卓伊凡 引言 關于最近優雅草卓伊凡發布關于MongoDB的內容是由于我們的甲方上線了一個很老的產品&#xff0c;但是他的用戶量極大&#xff0c;并且還有各種人搞事情&#xff0c;不斷的來GJ&a…

戴爾電腦 Linux 安裝與配置指南_導入mysql共享文件夾

本指南將詳細介紹在戴爾電腦上安裝 Linux 操作系統的步驟&#xff0c;以及后續的重要配置&#xff0c;包括系統選擇、安裝流程、MySQL 數據恢復、網絡配置、文件共享和遠程維護等。步驟清晰且配有命令行示例和配置文件示例&#xff0c;適合初中級用戶參考。1、Linux 系統選擇與…

昇思學習營-DeepSeek-R1-Distill-Qwen-1.5B 模型LoRA微調學習心得

LoRA微調&#xff1a;加入參數式微調凍結原始網絡參數&#xff0c;對Attention層中QKV等添加旁支&#xff0c;包含兩個低維度的矩陣A和矩陣B&#xff0c;微調過程中僅更新A、B 矩陣效果&#xff1a;訓練參數被大幅降低&#xff0c;資源消耗較低。對attention的參數加入如下圖所…

彩色轉灰度的核心邏輯:三種經典方法及原理對比

灰度實驗將彩色圖像轉換為灰度圖像的過程稱為灰度化&#xff0c;這種做法在圖像處理和計算機視覺領域非常常見。灰度圖與彩色圖最大的不同就是&#xff1a;彩色圖是由R、G、B三個通道組成&#xff0c;而灰度圖只有一個通道&#xff0c;也稱為單通道圖像&#xff0c;所以彩色圖轉…

Spring Boot 項目啟動自動執行邏輯的最佳實踐:掌握 CommandLineRunner

前言 Spring Boot 啟動階段,總有些操作迫不及待沖在前線:配置要加載,數據要準備,日志要搶首發,仿佛個個爭當“啟動 MVP”。如果你也想讓項目一啟動就自動開工,少寫點手動觸發的“苦力邏輯”,那 CommandLineRunner 就是你的得力助手。它像那個永遠第一個打卡的同事,不喝…

高可用集群KEEPALIVED的詳細部署

一.高可用集群 1.1 集群類型 LB&#xff1a;Load Balance 負載均衡 LVS/HAProxy/nginx&#xff08;http/upstream, stream/upstream&#xff09; HA&#xff1a;High Availability 高可用集群 數據庫、Redis SPoF: Single Point of Failure&#xff0c;解決單點故障 HPC&#x…

[論文閱讀] 人工智能 + 軟件工程 | NoCode-bench:評估LLM無代碼功能添加能力的新基準

NoCode-bench&#xff1a;評估LLM無代碼功能添加能力的新基準 論文&#xff1a;NoCode-bench: A Benchmark for Evaluating Natural Language-Driven Feature Addition 研究背景&#xff1a;當AI嘗試給軟件"加新功能"&#xff0c;我們需要一張靠譜的"考卷"…

【Git知識】Git 常用知識集合之基礎--分支系統與 Tag 標簽機制

&#x1f9f0; Git 常用知識集合Git 是程序員的“時間機器”。這份手冊幫你從入門到精通&#xff0c;把 Git 玩明白。1?? Git 基礎操作流程 &#x1f4cc; 三步走流程&#xff1a;添加 → 提交 → 推送 git add . # 把所有修改加入暫存區 git commit -m …

深入解析 Spark:關鍵問題與答案匯總

在大數據處理領域&#xff0c;Spark 憑借其高效的計算能力和豐富的功能&#xff0c;成為了眾多開發者和企業的首選框架。然而&#xff0c;在使用 Spark 的過程中&#xff0c;我們會遇到各種各樣的問題&#xff0c;從性能優化到算子使用等。本文將圍繞 Spark 的一些核心問題進行…

Python-初學openCV——對openCV的簡單使用

一、概述1、簡單介紹OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源的計算機視覺庫&#xff0c;旨在為實時圖像處理提供強大的功能。它由Intel開發&#xff0c;現由開源社區維護。OpenCV 提供了跨平臺的解決方案&#xff0c;支持 Windows、Linu…

去中心化時代的通信革命:briefing與cpolar技術融合帶來的安全范式革新

文章目錄前言1.關于briefing2.本地部署briefing3.使用briefing4.cpolar內網穿透工具安裝5.創建遠程連接公網地址6.固定briefing公網地址前言 數字協作本該是提升效率的過程&#xff0c;卻被這些數據管理問題不斷困擾&#xff1a;平臺條款中的監控聲明、跨網絡環境的接入障礙、…

GitHub新手生存指南:AI項目版本控制與協作實戰

點擊 “AladdinEdu&#xff0c;同學們用得起的【H卡】算力平臺”&#xff0c;H卡級別算力&#xff0c;按量計費&#xff0c;靈活彈性&#xff0c;頂級配置&#xff0c;學生專屬優惠。 代碼倉庫創建 分支管理 PR提交 開源項目復現 讀者收獲&#xff1a;掌握團隊開發必備技能…

Axios封裝以及添加攔截器

在前端開發中&#xff0c;http請求層的封裝可以極大提升代碼的復用性和可維護性&#xff0c;本文將完整的用axios封裝接口請求&#xff0c;配置請求與響應攔截器&#xff0c;封裝統一的請求方法全過程。封裝的目的和思路在項目直接用axios發送請求當然沒問題&#xff0c;但是如…

C語言中奇技淫巧04-僅對指定函數啟用編譯優化

相信很多人使用GCC編譯代碼時&#xff0c;都會接觸到gcc -O0/1/2/3/s&#xff0c;知道它可以對工程進行全局優化。 事實上&#xff0c;除了全局優化外&#xff0c;使用GCC擴展方式&#xff0c;我們還可以僅對部分關鍵函數實施差異化編譯優化。 在GCC編譯器中&#xff0c;attrib…

HTML Style 對象深度解析:從基礎到高級應用

一、Style 對象的核心概念定義與作用 Style 對象是 HTML DOM 中用于操作元素內聯樣式的接口&#xff0c;通過 element.style 訪問。它允許動態修改元素的 CSS 屬性&#xff0c;但僅能直接影響內聯樣式&#xff08;即通過 style 屬性直接寫在標簽中的樣式&#xff09;。與外部樣…

【C++】定義常量

在 C 中&#xff0c;有兩種簡單的定義常量的方式&#xff1a; 使用 #define 預處理器。使用 const 關鍵字。 #define 預處理器 #include <iostream> using namespace std;#define LENGTH 10 #define WIDTH 5 #define NEWLINE \nint main() {int area; area LENGTH …

基于遺傳算法的多無人車協同偵察與安全保護策略優化

基于遺傳算法的多無人車協同偵察與安全保護策略優化 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家&#xff0c;覺得好請收藏。點擊跳轉到網站。 1. 引言 1.1 研究背景與意義 隨著無人系統技術的快速發…

python面向對象編程詳解

面向對象編程&#xff08;OOP&#xff09;是一種以對象為核心的編程范式。Python全面支持OOP&#xff0c;主要包含以下核心概念&#xff1a;一、類與對象1.類(Class)類是創建對象的模板或藍圖&#xff0c;它定義了對象的屬性和方法。class Dog:# 類屬性&#xff08;所有實例共享…