目录
一、网页分析:
《三国演义》全集在线阅读_史书典籍_诗词名句网https://www.shicimingju.com/book/sanguoyanyi.html
网站如上:显示如下
利用抓包器查看数据包类型
可以看出三国演义的标题在页面源码的<li>里面
而每个<li>标签的href则是对应章节的详细内容的网址。
因此我们可以先爬取网页的标题和对应的章节网址,再以此爬取章节对应的内容。
1.1、查看网页请求和网页参数
1.1.1 标题页面
1.1.2 详情页页面
1.2、文章内容的标签
1.2.1、详情页
1.2.2 标签页(外页)
![](https://i-blog.csdnimg.cn/blog_migrate/026d583fc8e04012ef9909ad11a19e38.png)
二、完整代码
# 网址:https://www.shicimingju.com/book/sanguoyanyi.html
import requests
from bs4 import BeautifulSoup
import lxml
if __name__=="__main__":
#1 先爬取整张页面数据
url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
#1.1 UA伪装
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}
#1.2 发起请求并获取数据
page_text = requests.get(url=url, headers=headers).content
#2 我在首页中解析出章节的标题和详情页的url
# 2.1, 实例化BeautifulSoup对象,要将页面源码数据加载到该对象中
soup = BeautifulSoup(page_text, 'lxml')
# 解析章节标题和详情页的url
#<div class="book-mulu">下存放的标签和详情页地址 .book-mulu表示搜索数据
li_biaoti=soup.select('.book-mulu > ul > li')
#持久化存贮
fp = open('./sanguo.txt', 'w', encoding='utf-8')
#返回的是存放一系列li标签的列表,取出每个数据
for li in li_biaoti:#对每个数据进行提取
title=li.a.string#三国演义章节标题
章节_url="https://www.shicimingju.com/"+li.a['href']#获取每个章节的网址
#分别对每个章节进行数据爬取
章节_text = requests.get(url=章节_url, headers=headers).content
detail_soup = BeautifulSoup(章节_text, 'lxml')
div_tag = detail_soup.find('div', class_='chapter_content')
# 解析到了章节的内容
content = div_tag.text
#写入建立好的文件内
fp.write(title+':'+content+'\n')
print(title, '爬取成功')