Python实现爬取逐浪小说的方法


Posted in Python onJuly 07, 2015

本文实例讲述了Python实现爬取逐浪小说的方法。分享给大家供大家参考。具体分析如下:

本人喜欢在网上看小说,一直使用的是小说下载阅读器,可以自动从网上下载想看的小说到本地,比较方便。最近在学习Python的爬虫,受此启发,突然就想到写一个爬取小说内容的脚本玩玩。于是,通过在逐浪上面分析源代码,找出结构特点之后,写了一个可以爬取逐浪上小说内容的脚本。

具体实现功能如下:输入小说目录页的url之后,脚本会自动分析目录页,提取小说的章节名和章节链接地址。然后再从章节链接地址逐个提取章节内容。现阶段只是将小说从第一章开始,每次提取一章内容,回车之后提取下一章内容。其他网站的结果可能有不同,需要做一定修改。在逐浪测试过正常。

现分享此代码,一是做个记录,方便自己以后回顾。二么也想抛砖引玉,希望各路大神不吝赐教。

#-*-coding:utf8-*-
#!/usr/bin/python
# Python:   2.7.8
# Platform:  Windows
# Program:   Get Novels From Internet
# Author:   wucl
# Description: Get Novels
# Version:   1.0
# History:   2015.5.27 完成目录和url提取
#       2015.5.28 完成目录中正则提取第*章,提取出章节链接并下载。在逐浪测试下载无误。
from bs4 import BeautifulSoup
import urllib2,re
def get_menu(url):
  """Get chapter name and its url"""
  user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0"
  headers = {'User-Agent':user_agent}
  req = urllib2.Request(url,headers = headers)
  page = urllib2.urlopen(req).read()
  soup = BeautifulSoup(page)
  novel = soup.find_all('title')[0].text.split('_')[0]
  # 提取小说名
  menu = []
  all_text = soup.find_all('a',target="_blank")
  # 提取记载有小说章节名和链接地址的模块
  regex=re.compile(ur'\u7b2c.+\u7ae0')
  # 中文正则匹配第..章,去除不必要的链接
  for title in all_text:
    if re.findall(regex,title.text):
      name = title.text
      x = [name,title['href']]
      menu.append(x)
      # 把记载有小说章节名和链接地址的列表插入列表中
  return menu,novel
def get_chapter(name,url):
  """Get every chapter in menu"""
  html=urllib2.urlopen(url).read()
  soup=BeautifulSoup(html)
  content=soup.find_all('p') # 提取小说正文
  return content[0].text
if __name__=="__main__":
  url=raw_input("""Input the main page's url of the novel in ZhuLang\n    Then Press Enter to Continue\n""")
  if url:
    menu,title=get_menu(url)
    print title,str(len(menu))+'\n   Press Enter To Continue  \n' 
    # 输出获取到的小说名和章节数
    for i in menu:
      chapter=get_chapter(i[0],i[1])
      raw_input()
      print '\n'+i[0]+'\n'    
      print chapter
      print '\n'

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

Python 相关文章推荐
python 运算符 供重载参考
Jun 11 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
Python实现注册、登录小程序功能
Sep 21 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
opencv-python 提取sift特征并匹配的实例
Dec 09 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
基于python实现地址和经纬度转换
May 19 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 Python
python妹子图简单爬虫实例
Jul 07 #Python
python操作redis的方法
Jul 07 #Python
python生成IP段的方法
Jul 07 #Python
Python的多态性实例分析
Jul 07 #Python
Python中的urllib模块使用详解
Jul 07 #Python
Python实现图像几何变换
Jul 06 #Python
Python统计日志中每个IP出现次数的方法
Jul 06 #Python
You might like
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
一个php作的文本留言本的例子(六)
2006/10/09 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
Python中的集合介绍
2019/01/28 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
Django在Model保存前记录日志实例
2020/05/14 Python
python 写一个文件分发小程序
2020/12/05 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
怎样有效的进行自我评价
2013/10/06 职场文书
摄影展策划方案
2014/06/02 职场文书
销售团队口号大全
2014/06/06 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技