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 相关文章推荐
Flask框架的学习指南之用户登录管理
Nov 20 Python
python编程培训 python培训靠谱吗
Jan 17 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
python 自动批量打开网页的示例
Feb 21 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
Python如何进行时间处理
Aug 06 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 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
如何去掉文章里的 html 语法
2006/10/09 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
关于js datetime的那点事
2011/11/15 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
JS常用函数使用指南
2014/11/23 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
js实现无缝滚动双图切换效果
2019/07/09 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
详解Python编程中包的概念与管理
2015/10/16 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
python logging.info在终端没输出的解决
2020/05/12 Python
Python必须了解的35个关键词
2020/07/16 Python
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
爱国口号
2014/06/19 职场文书
关爱空巢老人感想
2015/08/11 职场文书