python实现爬虫抓取小说功能示例【抓取金庸小说】


Posted in Python onAugust 09, 2019

本文实例讲述了python实现爬虫抓取小说功能。分享给大家供大家参考,具体如下:

# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
from urllib import request
import re
import os,time
#访问url,返回html页面
def get_html(url):
  req = request.Request(url)
  req.add_header('User-Agent','Mozilla/5.0')
  response = request.urlopen(url)
  html = response.read()
  return html
#从列表页获取小说书名和链接
def get_books(url):#根据列表页,返回此页的{书名:链接}的字典
  html = get_html(url)
  soup = BeautifulSoup(html,'lxml')
  fixed_html = soup.prettify()
  books = soup.find_all('div',attrs={'class':'bbox'})
  book_dict = {}
  for book in books:
    book_name = book.h3.a.string
    book_url = book.h3.a.get('href')
    book_dict[book_name] = book_url
  return book_dict
#根据书名链接,获取具体的章节{名称:链接} 的字典
def get_parts(url):
  html = get_html(url)
  soup = BeautifulSoup(html,'lxml')
  fixed_html = soup.prettify()
  part_urls = soup.find_all('a')
  host = "http://www.xiaoshuotxt.org"
  part_dict = {}
  for p in part_urls:
    p_url = str(p.get('href'))
    if re.search(r'\d{5}.html',p_url) and ("xiaoshuotxt" not in p_url):
      part_dict[p.string] = host + p_url
  return part_dict
#根据章节的url获取具体的章节内容
def get_txt(url):
  html = get_html(url)
  soup = BeautifulSoup(html,'lxml')
  fixed_html = soup.prettify()
  title = soup.h1.string #获取文章标题
  content = soup.find('div',attrs={'class':'zw'})
  txt = BeautifulSoup.get_text(content) #正文内容
  return txt
if __name__ == "__main__":
  root_dir= r'e:\books'
  #url = 'http://www.xiaoshuotxt.org/mingzhu/index_2.html' #第2页的小说
  url = "http://www.xiaoshuotxt.org/writer/58" #金庸的小说
  books = get_books(url)
  for book_name,book_url in books.items():
    os.mkdir(os.path.join(root_dir,book_name))
    part_dict = get_parts(book_url)
    print(book_name,"共:",len(part_dict),"章节")
    for part_name,part_url in part_dict.items():
      print("正在保存:",part_name)
      f1 = open(r'e:\books\%s\%s.txt'%(book_name,part_name),'w',encoding='utf-8')#以utf-8编码创建文件
      part_txt = get_txt(part_url)
      f1.write(str(part_txt))
      f1.close()
      time.sleep(2)

运行效果:

python实现爬虫抓取小说功能示例【抓取金庸小说】

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python列表推导式的使用方法
Nov 21 Python
python实现的解析crontab配置文件代码
Jun 30 Python
Pytorch入门之mnist分类实例
Apr 14 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
Python 字符串换行的多种方式
Sep 06 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
Python爬虫实现百度翻译功能过程详解
May 29 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
python 解决函数返回return的问题
Dec 05 Python
python中HTMLParser模块知识点总结
Jan 25 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 Python
python实现BP神经网络回归预测模型
Aug 09 #Python
Django ORM 聚合查询和分组查询实现详解
Aug 09 #Python
解决Django后台ManyToManyField显示成Object的问题
Aug 09 #Python
详解Python中的正斜杠与反斜杠
Aug 09 #Python
图文详解Django使用Pycharm连接MySQL数据库
Aug 09 #Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
Aug 09 #Python
Django使用Jinja2模板引擎的示例代码
Aug 09 #Python
You might like
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
PHP5 面向对象(学习记录)
2009/12/02 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
django的model操作汇整详解
2019/07/26 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
学校介绍信范文
2014/01/14 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript