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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
零基础写python爬虫之抓取百度贴吧代码分享
Nov 06 Python
python定时执行指定函数的方法
May 27 Python
详解Python自建logging模块
Jan 29 Python
python 定义给定初值或长度的list方法
Jun 23 Python
使用Python实现在Windows下安装Django
Oct 17 Python
Python基础教程之异常详解
Jan 10 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
Python中的整除和取模实例
Jun 03 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
php生成与读取excel文件
2016/10/14 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
JavaScript 动态生成方法的例子
2009/07/22 Javascript
JavaScript 常用函数库详解
2009/10/21 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python循环语句之break与continue的用法
2015/10/14 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
医院门卫岗位职责
2013/12/30 职场文书
业务员自荐信范文
2014/04/20 职场文书
男性健康日的活动方案
2014/08/18 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android