2. 代码实现
import requests
from bs4 import BeautifulSoup
if __name__ == '__main__':
# 一、网址分析
# 对首页的页面数据进行爬取
# 1. 模拟浏览器
headers = {
'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
}
# 2. 指定URL
url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
# 3. 发起请求
#【response.content】不会解码,直接以二进制形式返回,常用于文本响应
#【response.text】会自动根据http头部去推测网页的编码,解码并返回解码后的文本,常用于图片和视频
# 注意:由于使用【response.text】时,会解码返回,但是解码后的文本与原网页编码不一致,从而导致【中文乱码】
# 处理【中文乱码】三种方法:
#(1)修改网页文本的获取方法,直接将response.text改为response.content
#(2)手动设定响应数据的编码格式;
# response = requests.get(url)
# response.encoding = 'utf-8'
# page_text = response.text
# (3) 通用处理中文乱码的解决方案
# 返回的对象名称 = 对象名称.encode('iso-8859-1').decode('gbk')
# 例如:title = title.encode('iso-8859-1').decode('gbk')
page_text = requests.get(url=url, headers=headers).content
# 二、数据解析
# 在首页中解析出章节的标题和详情页的URL
# 使用bs4进行数据解析
# 1. 实例化BeautifulSoup对象,需要将页面源码数据加载到该对象中
soup = BeautifulSoup(page_text,'lxml')
# 2. 解析章节标题和详情页的URL
# 根据select层级选择器,获取li标签中的所有a标签(获取章节标题)
li_list = soup.select('.book-mulu > ul > li')
# 持久化存储
fp = open('./sanguo.txt', 'w', encoding='utf-8')
# 获取li标签里的a标签
for li in li_list:
# 获取章节标题
# 通过bs4方法直接获取a标签直系文本。string:只可以获取直系文本
title = li.a.string
# 对URL进行拼接,获取详情页的URL
detail_url = 'https://www.shicimingju.com' + li.a['href']
# 对详情页发起请求
detail_page_text = requests.get(url=detail_url,headers=headers).content
# 解析出详情页中相关的章节内容,重新实例化一个详情页bs对象,lxml解析器
detail_soup = BeautifulSoup(detail_page_text,'lxml')
# 定位class属性
div_tag = detail_soup.find('div',class_='chapter_content')
# 解析到了章节的内容,利用text方法获取
content = div_tag.text
# 持久化存储
fp.write(title+':'+content+'\n')
print(title,'爬取成功!!!')
文章来源地址https://www.toymoban.com/news/detail-713840.html
文章来源:https://www.toymoban.com/news/detail-713840.html
到了这里,关于python爬虫之使用bs4方法进行数据解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!