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 20 Python
Python常用正则表达式符号浅析
Aug 13 Python
python获取文件扩展名的方法
Jul 06 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
Python数据结构之图的应用示例
May 11 Python
Python并行分布式框架Celery详解
Oct 15 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
python sleep和wait对比总结
Feb 03 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
php中文本数据翻页(留言本翻页)
2006/10/09 PHP
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
PHP中iconv函数知识汇总
2015/07/02 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
Python新手实现2048小游戏
2015/03/31 Python
详解Python中的正则表达式的用法
2015/04/09 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
python如何调用java类
2020/07/05 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
在校硕士自我鉴定
2014/01/23 职场文书
工程质量月活动方案
2014/02/19 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
《云房子》教学反思
2014/04/20 职场文书
购房个人委托书范本
2014/10/11 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏