一、前言

2020-04-2日爬虫练习

爬取网站:诗词名句网的四大名著
需求:将四大名著的每一个章节存储到本地
技术路线:
1.requests
2.BeautifulSoup
3.os

二、代码解释

1、最近在学习 数据解析之BeautifulSoup4库 ,所以写这篇爬虫来练练手,巩固知识点。

BeautifulSoup4知识点参考我博文:【爬虫学的好,基础少不了】:数据解析之BeautifulSoup4库

2、其实我也是小白,学习python没多久,这样写代码的好处有两点、一、结构清晰,一个函数负责一个功能,二、能提高代码复用率。因为诗词名句网中每一个章节是一个页面,所以需要重复获取页面的html。
3、由于,特别是爬虫代码都有时效性,如果不能使用记得私聊我~
import requests
from bs4 import BeautifulSoup
import os, timeclass Book:def __init__(self):self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36','Referer': 'http://www.shicimingju.com/book/',}# 获取htmldef get_html(self, url):result = requests.get(url=url, headers=self.headers)return BeautifulSoup(result.text, 'lxml')# 获取四本书的url和书名def get_books(self, html):books = {}div = html.findAll("div", class_="book-item")for contents in div:book_name = contents.get_text().replace("\n", "")book_url = 'http://www.shicimingju.com' + contents.a['href']books[book_name] = book_urlreturn books# 获取书目录def get_book_mulu(self,books_html):book_mulu_urls = []mulus = books_html.findAll("div", class_="book-mulu")for mulu in mulus:mulu_herfs = mulu.findAll('a')for mulu_herf in mulu_herfs:mulu_herf = 'http://www.shicimingju.com' + mulu_herf['href']book_mulu_urls.append(mulu_herf)return book_mulu_urls# 获取目录正文内容def book_mulu_content(self, book_mulu_html):book_texts = {}title = book_mulu_html.find("div", class_="card bookmark-list")mulu_title = title.h1.string     # 章节namemulu_contents = book_mulu_html.findAll('div', class_="chapter_content")for text in mulu_contents:text = text.get_text()  # 正文内容book_texts[mulu_title] = textreturn book_texts# 保存到本地def save_book(self, book_texts, book_name):if not os.path.exists(book_name):  # 判断目录存不存在,不存在就创建一个os.makedirs(book_name)for title in book_texts:file_path = book_name + '/' + titlewith open(file_path+'.text', 'a', encoding='utf-8')as f:f.write(book_texts[title])print('【%s】--章节下载成功!' % title)# 功能模块def func(self, url):books = self.get_books(self.get_html(url))for book_name in books:time.sleep(1)for book_mulu_url in self.get_book_mulu(self.get_html(books[book_name])):book_texts = self.book_mulu_content(self.get_html(book_mulu_url))self.save_book(book_texts,book_name)if __name__ == '__main__':data = Book()data.func('http://www.shicimingju.com/bookmark/sidamingzhu.html')


每日爬虫练习:bs4库爬取诗词名句网的四大名著相关推荐

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

    爬取诗词名句网的三国演义小说 诗词名句网,有很多的诗词和一些课本上古诗的,是一个很好的文学网站,但是我们就来爬取诗词名句网的三国演义小说 第一步我们还是导入要导入的库: import requests ...

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

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

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

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

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

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

  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. 一起学爬虫——使用xpath库爬取猫眼电影国内票房榜

    之前分享了一篇使用requests库爬取豆瓣电影250的文章,今天继续分享使用xpath爬取猫眼电影热播口碑榜 XPATH语法 XPATH(XML Path Language)是一门用于从XML文件中 ...

  8. 【爬虫】用Python爬取去哪儿网热门旅游信息(并打包成旅游信息查询小工具)

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/det ...

  9. 使用Python requests和BeautifulSoup库爬取去哪儿网

    功能说明:爬取去哪儿网城市下面若干条景点详细信息并将数据导入Excel表(使用xlwt库) 爬取去哪儿网的教程参考自 https://blog.csdn.net/gscsd_t/article/det ...

最新文章

  1. 暑期集训5:并查集 线段树 练习题A:  HDU - 1232 ​​​​​​​
  2. Eclipse的安装与汉化
  3. 邻接表建立图(c语言)
  4. Django,Ajax,Vue实现文章评论功能
  5. 旋流式沉砂池计算_旋流沉砂池设计方法
  6. Hadoop学习之路(十三)MapReduce的初识
  7. Android 数据访问之External Storage 数据保存在sd卡 demo+笔记
  8. 《十天学会单片机和C语言编程》
  9. php list() ecah(),PHP each()与list()函数
  10. 废旧安卓手机利用(一)安装linux系统(Centos、Debian)
  11. python投资组合有效边界,软核科普系列:用python帮你建立自己的投资组合
  12. 线程池,是时候做个了结了!
  13. 【渝粤教育】国家开放大学2018年春季 7404-21T数学建模 参考试题
  14. 【品牌营销策划方案】2020碧桂园x江小白创意引爆策略方案【白酒】【IP】【创意营销】
  15. 【FAQ】应用集成HMS Core部分服务出现“ 6003报错”情况的解决方法来啦
  16. PHP的strtotime()
  17. java数据结构通讯录管理系统_数据结构课程设计—通讯录管理系统
  18. 薛定谔教程--Glide分子对接 | Ligand Docking
  19. Python中flatten用法
  20. CentOS8_CA

热门文章

  1. Kerberos 对话集
  2. 【天下手游】游戏角色分析
  3. (转)话说Python:非主流编程语言
  4. Java ArrayList 类
  5. 计算机清理垃圾文件丢失怎么恢复,清理电脑后怎样恢复丢失数据_电脑数据恢复_迷你兔...
  6. 在热搜沈阳鸡架背后,我们看到了另一个让人欣慰的现象
  7. JavaSwing基础
  8. 实战:活动运营的最高境界 产品活动化活动产品化
  9. docker 使用理解 全流程
  10. html5中meta标签总结