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操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
python使用urllib2提交http post请求的方法
May 26 Python
Python书单 不将就
Jul 11 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
Python实现Singleton模式的方式详解
Aug 08 Python
opencv调整图像亮度对比度的示例代码
Sep 27 Python
Python unittest框架操作实例解析
Apr 13 Python
python基于opencv实现人脸识别
Jan 04 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 printf输出格式使用说明
2010/12/05 PHP
php class类的用法详细总结
2013/10/17 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
表单元素事件 (Form Element Events)
2009/07/17 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
python复制文件代码实现
2013/12/23 Python
python安装教程
2018/02/28 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
Python文件操作基础流程解析
2020/03/19 Python
python 递归相关知识总结
2021/03/03 Python
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
init进程的作用
2015/08/20 面试题
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
租车协议书范本2014
2014/11/17 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
心灵捕手观后感
2015/06/02 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
村主任当选感言
2015/08/01 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis