爬取诗词名句网的三国演义小说

诗词名句网,有很多的诗词和一些课本上古诗的,是一个很好的文学网站,但是我们就来爬取诗词名句网的三国演义小说

第一步我们还是导入要导入的库:
import requests
from bs4 import BeautifulSoup
import os
import time
如果没有安装的可以通过
pip install 库 安装这些库

下面我们开始准备,这次我们要用到的是bs4

我们先来回顾一些bs4的一些知识吧:

bas4解析原理

实例化一个BeautifulSoup的对象,且将待解析的页面源码数据加载到该对象中
调用BeautifulSoup对象中相关方法或者属性进行标签定位和文本数据的提取
环境安装:
pip install lxml#解析器
pip install bs4
BeautifulSoup对象的实例化:
BeautifulSoup(fp,‘lxml’):用来将本地存储的html文档中的数据进行解析
BeautifulSoup(page_text,‘lxml’):用来将互联网上请求到的页面源码数据解析解析
标签定位:
soup.tagName:只可以定位第一次出现的tagName标签
soup.find(‘tagName’,attrName=‘value’);属性定位
soup.findAll:跟find一样用作属性定位,只不过findall返回的是列表
soup.select(“选择器”)
-类选择器
-id选择器
-层级选择
->大于号:表示一个层级
->空格:表示多个层级
取数据
-.text #返回的是该标签下所有的文本内容
-.string #返回的是该标签直系下的文本内容
取属性
-tag[‘attrName’]

上面的这些知识我们在下面的爬取中都要用到:

下面我们正式开始了:

首先我们还是进行一些基本的反爬,就是通过headers来模拟浏览器在发送请求给网站,而不是让浏览器知道我们是机器,让浏览器以为是浏览器在访问

如图1:

main_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/88.0.4324.150 Safari/537.36'
}
page_text=requests.get(url=main_url,headers=headers)
print(page_text)

我们在上面打印测试拿到浏览器的html时候,我们会发现出现乱码现象,我们就用下面这个解决他

page_text.encoding='UTF-8'

加上编码格式就行了

下面是数据解析:

我们透过bs4来定位html里面的元素:

#数据解析,章节标题,详情页url,章节内容
soup=BeautifulSoup(page,'lxml')
a_list=soup.select('.book-mulu>ul>li>a')

我们这样字就拿到这个如图2的htnl页面内容:

后面我们就通过for循环来拿到所有章节的详情页面的url和标题信息:

for i in a_list:title=i.string#拿到标题文本,string #返回的是该标签直系下的文本内容detail_url='http://www.shicimingju.com'+i['href']#print(title,detail_url)
#   #对详情页发起请求解析出章节内容page_detail=requests.get(url=detail_url,headers=headers)#对章节页面进行再次请求,拿到页面htmlpage_detail.encoding='UTF-8'#防止乱码,声明编码格式page_detail=page_detail.text#print(page_detail)soup=BeautifulSoup(page_detail,'lxml')div_tag=soup.find('div',class_="chapter_content")content=div_tag.text

下面我们就进行爬取的最后一步也就是数据的持久化,数据存储:

#数据持久化,存储小说
path='三国小说'#要存储的文件夹if not  os.path.exists(path):#判断文件夹是否存在os.mkdir(path)#如果文件夹不存在,就重新创建一个文件夹with open(path+'./%s'%title+'.txt','w',encoding='utf-8') as file:file.write(content+'\n')print("正在下载:"+title)time.sleep(2)#最基本的反爬虫,通过时间的休眠来让浏览器不会检测到是机器在爬取file.close()

下面是完整代码:

import requests
from bs4 import BeautifulSoup
import os
import time
path='三国小说'#要存储的文件夹
main_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/88.0.4324.150 Safari/537.36'
}
page_text=requests.get(url=main_url,headers=headers)
page_text.encoding='UTF-8'
page=page_text.text
#print(page)
#数据解析,章节标题,详情页url,章节内容
soup=BeautifulSoup(page,'lxml')
a_list=soup.select('.book-mulu>ul>li>a')
for i in a_list:title=i.stringdetail_url='http://www.shicimingju.com'+i['href']#print(title,detail_url)
#   #对详情页发起请求解析出章节内容page_detail=requests.get(url=detail_url,headers=headers)page_detail.encoding='UTF-8'page_detail=page_detail.text#print(page_detail)soup=BeautifulSoup(page_detail,'lxml')div_tag=soup.find('div',class_="chapter_content")content=div_tag.text# print(content)#数据持久化,存储小说if not  os.path.exists(path):os.mkdir(path)with open(path+'./%s'%title+'.txt','w',encoding='utf-8') as file:file.write(content+'\n')print("正在下载:"+title)time.sleep(2)file.close()

效果图:


爬取诗词名句网的三国演义小说相关推荐

  1. 使用Xpath+多进程爬取诗词名句网的史书典籍类所有文章。update~

    上次写了爬取这个网站的程序,有一些地方不完善,而且爬取速度较慢,今天完善一下并开启多进程爬取,速度就像坐火箭.. # 需要的库 from lxml import etree import reques ...

  2. 每日爬虫练习:bs4库爬取诗词名句网的四大名著

    一.前言 2020-04-2日爬虫练习 爬取网站:诗词名句网的四大名著 需求:将四大名著的每一个章节存储到本地 技术路线: 1.requests 2.BeautifulSoup 3.os 二.代码解释 ...

  3. python 爬取诗词名句网(包含页面跳转)

    代码,之前一直乱码,经过多番尝试 使用了.encode('ISO-8859-1').decode('utf-8')这个方法 from bs4 import BeautifulSoup import r ...

  4. 爬虫学习(12):爬取诗词名句网并且下载保存

    用BeautifulSoup爬取并且下载.仅仅用作学习用途哈,不然又侵权了. 效果: 由于我是正在自学爬虫,不是很能找到非常优化的办法,是一名计算机大二学生,代码可能不是很好,还请大神指点,这是我扣扣 ...

  5. python爬虫 爬取诗词名句网

    使用requests库,xpath库 import requests import time from lxml import etree# 去请求页面的函数 def request_Header(u ...

  6. Python爬虫实战(02)—— 爬取诗词名句三国演义

    目录 前言 一.准备工作 二.爬取步骤 1. 引入库 2. 发送请求拿到页面 3.定位到章节URL 4.拼接URL拿到章节内容 5.存储各章节内容 完整代码 前言 这次爬虫任务是从诗词名句上爬取< ...

  7. python爬虫lxml解析爬取诗词名句

    原创:仅用于学习Python爬虫,请勿商业或恶意爬取数据 文件夹和文件都是程序创建,我只爬了这些数据用于测试 仅用了两个for循环,并没有搞的太难(函数),适合新手操练,有大量注释易于理解 from ...

  8. 利用BS爬取逐浪网多本小说

    (更新一下软件,手贱的没有保存原来的文件...) 学习BS之后,发现确实比正则有点强...但是在一些时候,他们两个同时运用效果更好.在爬取小说时候就体现出来了,对于BS来说直接调用文字标签就好,别的不 ...

  9. 使用Scrapy框架爬取88读书网小说,并保存本地文件

    Scrapy框架,爬取88读书网小说 链接: 88读书网 源码 工具 python 3.7 pycharm scrapy框架 教程 spider: # -*- coding: utf-8 -*- im ...

最新文章

  1. 10.4.4 使用ctypes调用kernel32.dll中的函数
  2. 【Python】洛谷 P1175_表达式的转换(逆波兰式、中缀表达式、后缀表达式、栈)
  3. $(function(){}) 与(function(){})()在执行时的优先级
  4. wallpaper怎么导入视频_抖音上爆火的手绘视频怎么做?这篇文章来教你!
  5. 秒懂文件路径 / 和 ./ 和 ../ 和 ../../
  6. mysql 递归查询_Mysql递归查询,无限级上下级菜单
  7. 百度文库免费复制文字_这个工具让想所有东西都能复制,连百度文库都能复制!...
  8. 嵌入式开发比单片机开发难?
  9. python爬取电子病历_电子病历患者查询
  10. [RK3288][Android6.0] Audio中的HW Params设置流程
  11. 积分商城消费系统定制
  12. 对HackTheBox里面的Bastion测试
  13. Unity5 UI.Text 引发Canvas.SendWillRenderCanvases很卡的问题
  14. 旅行青蛙服务器维护时间,旅行青蛙怎么调节时间 旅行青蛙修改时间攻略
  15. 遮天、斗破苍穹、凡人修仙传、雪中悍刀行争第四届橙瓜网络文学奖
  16. Excel条形图也可以变身高大上
  17. 视频 TS 内容详细讲解
  18. java phrase_java-Maven无法部署工件,ReasonPhrase:Forbidden
  19. 给中国学生的第三封信——成功、自信、快乐(转)
  20. 0基础跟我学python---进阶篇(1)

热门文章

  1. 程序猿应该了解的密码技术
  2. 关于把cd转成mp3的文章
  3. 2008-03-08 好高兴啊,体验了准妈妈的感觉
  4. C语言程序设计 详细注意事项
  5. 新零售时代,企业如何打造新高端产品品牌?
  6. Axure RP 8.1 V1.6版本授权码
  7. 计算机在职研究生学费多少?贵不贵?
  8. 计算机桌面运行慢,电脑运行慢,教您电脑运行慢怎么解决
  9. 102 Three.js 使用几何体生成拱门形状
  10. 可以看netflix吗_为何Netflix问“您还在看吗?” (以及如何阻止它)