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使用PyV8执行javascript代码示例分享
Dec 04 Python
解析Python中的__getitem__专有方法
Jun 27 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
深入浅析Python的类
Jun 22 Python
解决pycharm无法识别本地site-packages的问题
Oct 13 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
NumPy 基本切片和索引的具体使用方法
Apr 24 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
解决python对齐错误的方法
Jul 16 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 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
js indexOf()定义和用法
2012/10/21 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
python db类用法说明
2020/07/07 Python
python实现发送邮件
2021/03/02 Python
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
感恩母亲节活动方案
2014/03/04 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
高考寄语大全
2014/04/08 职场文书
电工技术比武方案
2014/05/11 职场文书
应聘会计求职信
2014/06/11 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL