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 相关文章推荐
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
Python 多进程和数据传递的理解
Oct 09 Python
python3中的md5加密实例
May 29 Python
用Django写天气预报查询网站
Oct 21 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
numpy求平均值的维度设定的例子
Aug 24 Python
Python数据库小程序源代码
Sep 15 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
Django之form组件自动校验数据实现
Jan 14 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
python实现图片,视频人脸识别(opencv版)
Nov 18 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
怎样去阅读一份php源代码
2009/08/21 PHP
PHP开发负载均衡指南
2010/07/17 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
简明 Python 基础学习教程
2007/02/08 Python
python求素数示例分享
2014/02/16 Python
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
python图片验证码生成代码
2016/07/02 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
python批量修改图片大小的方法
2018/07/24 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python动态进度条的实现代码
2019/07/03 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
毕业生求职推荐信
2013/11/04 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android