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的PIL模块来进行图片对比
Feb 18 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
win10系统下python3安装及pip换源和使用教程
Jan 06 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
Python优秀开源项目Rich源码解析的流程分析
Jul 06 Python
python如何写try语句
Jul 14 Python
分享Python异步爬取知乎热榜
Apr 12 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
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
微信小程序如何使用云开发
2019/05/17 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
浅析Python中的序列化存储的方法
2015/04/28 Python
python使用pymysql实现操作mysql
2016/09/13 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
django中forms组件的使用与注意
2019/07/08 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
大学生农村教师实习自我鉴定
2013/09/21 职场文书
交通法规咨询中心工作职责
2013/11/27 职场文书
人事主管岗位职责范本
2013/12/04 职场文书
酒店员工检讨书
2014/02/18 职场文书
语文教育专业求职信
2014/06/28 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
个人整改方案范文
2014/10/25 职场文书
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers