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下用于监视文件系统的pyinotify包
Nov 13 Python
使用Python写个小监控
Jan 27 Python
Python循环语句中else的用法总结
Sep 11 Python
python中Switch/Case实现的示例代码
Nov 09 Python
Python查找两个有序列表中位数的方法【基于归并算法】
Apr 20 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
python第三方库学习笔记
Feb 07 Python
简单了解python调用其他脚本方法实例
Mar 26 Python
Python使用configparser读取ini配置文件
May 25 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 Python
pandas针对excel处理的实现
Jan 15 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
第1次亲密接触PHP5(2)
2006/10/09 PHP
php 中英文语言转换类
2011/09/07 PHP
mac下安装nginx和php
2013/11/04 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
php按单词截取字符串的方法
2015/04/07 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
python正则中最短匹配实现代码
2018/01/16 Python
浅析python协程相关概念
2018/01/20 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
美国网上书店:Barnes & Noble
2018/08/15 全球购物
安全生产责任书
2014/03/12 职场文书
信用卡工作证明模板
2014/09/14 职场文书
联欢会开场白
2015/06/01 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
Golang Web 框架Iris安装部署
2022/08/14 Python