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守护线程用法实例
Jun 23 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
Apr 19 Python
运行django项目指定IP和端口的方法
May 14 Python
Python中反射和描述器总结
Sep 23 Python
python3中property使用方法详解
Apr 23 Python
python实现最小二乘法线性拟合
Jul 19 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
基于Python+QT的gui程序开发实现
Jul 03 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
pyqt5实现井字棋的示例代码
Dec 07 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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
php微信开发之上传临时素材
2016/06/24 PHP
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
Python pandas常用函数详解
2018/02/07 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
会计学自我鉴定
2014/02/06 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
我有一个梦想演讲稿
2014/05/05 职场文书
上课迟到检讨书
2015/05/06 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript