今天继续学习,爬取四大名著,内容来自静态网站http://www.purepen.com/index.html

目标:

  1. 每部名著单独一个文件夹
  2. 每回单独一个文件,格式:数字.章节名.txt,eg:1.甄士隐梦幻识通灵 贾雨村风尘怀闺秀.txt
  3. 去掉html中的换行和其他元素,只保留段落的换行

其他

因为编写代码边调试,每次完全重新执行比较慢(一部书100-120回),增加了文件名判断逻辑,已经爬下来的,就不重复爬了

注意:需要自己手工创建4个同名目录(后续再回来更新)

遇到的问题:

html解析时,遇到特殊字符,text()无法完整获取全部内容,如图

最终通过调整解析字符集解决

html = etree.parse('html.txt', etree.HTMLParser(encoding='gb18030'))

完整代码

import time
import requests
from lxml import etreehead = {}
url = "http://www.purepen.com/hlm/index.htm"
head["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
head["Accept"]= "gzip, deflate"
head["Accept-Language"]= "zh-CN,zh;q=0.9,en;q=0.8"
head["Connection"] = "keep-alive"def main(bookName):print(bookName+"原本",":")# 爬标题res = requests.get(url.replace('hlm',bookName), headers=head)with open("html.txt", "wb") as f:f.write(res.content)html = etree.parse('html.txt', etree.HTMLParser(encoding='gb18030'))title_list = html.xpath('//table//a/text()')# 爬章节连接# 获取属性值:@link_list = html.xpath('//table//a/@href')#判断是否已经存在文件i = 1for _title in title_list:_file = './Text/'+bookName+'/' + str(i) + '.' + str(_title) + '.txt'try:#有就继续f = open(_file)print('File:'+ _file +' is exist')f.close()except FileNotFoundError:#没有就爬内容,并写文件print('File:'+ _file +' is not found')#获取内容_url = "http://www.purepen.com/"+bookName+"/"+link_list[i-1]_content = getContent(_url)fileSave(_content,_file,'./Text/'+bookName+'/'+str(i)+'.'+_title+'.txt')#写文件i += 1def getContent(_url):res = requests.get(_url, headers=head)with open("html.txt", "wb") as f:f.write(res.content)html = etree.parse('html.txt', etree.HTMLParser(encoding='gb18030'))content = html.xpath('//center//font/text()')return contentdef fileSave(_content, _title, _path):f = open(_path,'w')f.write(_content[0].replace('\n','').replace('\u3000\u3000','\n').lstrip())f.close()return Trueif __name__ == '__main__':main('shz')

其中bookName:

  • 红楼梦hlm
  • 水浒传shz
  • 三国演义sgyy
  • 西游记xyj

结果

Python学习之路-爬虫(四大名著)相关推荐

  1. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  2. python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

    教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...

  3. Python学习之路—2018/7/14

    Python学习之路-2018/7/12 3.功能开发 3.3 设计博客首页 博客首页中最重要的就是中间的文章区域,所以我首先把文章区域设计出来,一开始并没有数据,如果用orm添加或者直接在数据库添加 ...

  4. Python学习之路—2018/6/20

    Python学习之路-2018/6/20 1.模板语法之变量 views.py def index(request):import datetimes="gyq"l=[1,2,3] ...

  5. (私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)

    python学习(游戏.爬虫.排序.练习题.错误总结) https://pan.baidu.com/s/1dPzSoZdULHElKvb57kuKSg l7bz python100经典练习题 pyth ...

  6. Python学习之路9☞面向对象的程序设计

    Python学习之路9☞面向对象的程序设计 一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什 ...

  7. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴.... 转载于:https://www.cnblogs.com/chobit/p/6163287.html

  8. Python学习之路5☞文件处理

    Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...

  9. python学习之路0x00

    Python学习之路0x00 在学习python之前,要知道什么是python? python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,与c语言不同, c语言要编译后才能执行.而 ...

  10. 我的Python学习之路(一)_Mr_Ouyang

    我的Python学习之路(一)_Mr_Ouyang 笔者按: 本文从18:55开始写作,至19:38中断,又从21:12始继续,至23:22写就. 共计耗时113分钟,总字数9081字,约80.4字/ ...

最新文章

  1. Andriod --- JetPack (六):Room 增删改查
  2. ios 获取一个枚举的所有值_Java enum枚举在实际项目中的常用方法
  3. sql group by having用法_神奇的 SQL 为什么 GROUP BY 之后不能直接引用原表中的列?...
  4. PWA(Progressive Web App)入门系列:Cache Storage Cache
  5. php 生产环境调错
  6. 同花顺开放接口api_接口大师,即刻构建你的OpenAPI+开放平台
  7. 中国电信与阿里巴巴签署全面战略合作协议
  8. [lammps教程] lammps建立纳米管模型
  9. 锐捷交换机配置保存到计算机,锐捷交换机配置命令总结中篇
  10. SOJSONV5解密,SOJSON.V5解密方法,SOJSONV5解密分析
  11. J-Link软件和文档包的版本发行说明(4)[V6.50 ~ V6.90a版本]
  12. 微分几何笔记(1) —— 预备知识 Proof of Mazur-Ulam Theorem
  13. mac/macbook触摸板/鼠标/键盘失灵
  14. 计算机算法实际应用,数学方法在计算机算法中的应用分析
  15. java web 站内信 设计
  16. 开发简单Android聊天软件(1)
  17. 计算机基础名词(二)
  18. Springboot集成datax方案小记
  19. 美甲实体行业没有客户?想做线上引流?这些渠道千万别错过!
  20. K8S DiskPressure造成pod被驱逐——筑梦之路

热门文章

  1. Invalid bound statement (not found): com.zheng.mapper.UserMapper.login
  2. VueDemo-12.加入购物车
  3. 20个网上赚钱你要知道的网站!
  4. Unity3d 微信小程序游戏
  5. 今夏流行的十大避暑胜地
  6. 使用discuz搭建bbs论坛网站
  7. 谷歌gmail注册入口_Gmail,日历和其他Google Apps即将出现的外观如下
  8. 值得推荐的在线报表设计器
  9. 搭建网站服务器必须开443端口,HTTPS端口必须一定要443吗?
  10. 燃烧的远征恢复英文语音的方法