南和网站建设公司,wordpress模板文件在哪里,wordpress添加文章时可以上传视频,com网站怎么注册Beautiful Soup实战案例#xff1a;爬取诗词名句网
目标
爬取诗词名句网上的古典文学作品内容#xff0c;包括书籍目录和章节内容#xff0c;并将每章内容独立保存为文本文件。
目标网址: 《三国演义》全集在线阅读_史书典籍_诗词名句网
要求 书…Beautiful Soup实战案例爬取诗词名句网
目标
爬取诗词名句网上的古典文学作品内容包括书籍目录和章节内容并将每章内容独立保存为文本文件。
目标网址: 《三国演义》全集在线阅读_史书典籍_诗词名句网
要求 书籍目录管理目录名基于书籍名称动态生成 目录页解析: 下载书籍目录页HTML、解析章节列表结构 章节信息提取: 构建完整章节URL基础URL 相对路径 章节内容获取: 下载各章节HTML内容 内容提取与处理: BS作为主要解析器、提取纯文本内容去除HTML标签 文件存储规范: 文件名安全处理、使用章节名称作为文件名 进度反馈: 目录创建成功通知 、文件写入成功确认等
代码
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, headersheaders)
# 进行编码
response.encoding utf-8
# 转成html对象从而提取数据
html BeautifulSoup(response.text,lxml)
# 得到对象
tablis html.select(a[classtabli])
# 循环提取数据
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,headersheaders)response_content.encoding utf-8# 转成html格式content_html BeautifulSoup(response_content.text,lxml)# 获取文本对象div_content content_html.select(div[classtext p_pad])# 提取文章内容content div_content[0].get_text()
# 写入文件file_name f{safe_name}.txtwith open(os.path.join(三国演义,file_name),w,encodingutf-8) as f:f.write(content)print(my_dict)