当前位置: 首页 > news >正文

python 自动下载脚本_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'

相关文章:

  • jdbc封装工具类代码_[22]-JDBC 工具类优化
  • jpg转dwg格式转换器_如何将PDF或者JPG转CAD格式(dwg格式)?
  • python多线程实现生产者消费者_使用Python多线程实现生产者与消费者模型
  • layui框架和vue哪个好_目前流行的9大前端框架
  • python xlwings筛选_使用Python和xlwings在Excel中查找活动/选定单元格的范围
  • stream distinct去重_会了这些 Stream 操作,再学 Flink 真的简单的不得了
  • ubuntu vscode安装_Visual Studio Code软件的安装和开发环境搭建
  • 只显示小方格_展位设计中的小空间如何运用使空间看上去更大(上)
  • oa系统登录后几分钟自动退出_你知道系统登录有多少种方式吗?
  • python 怕网页_Python解救论文拖延狗
  • xilinx bd修改后sdk如何刷新bsp_如何使用Theos对iOS应用程序进行注入
  • mysql 统计查询总数_详解慢查询日志分析工具mysqlsla--概念、选型、安装及实例说明...
  • python去除注释语句_Python文件去除注释的方法
  • qtdesigner 如何清空输入框_如何进行开发需求分解?
  • struts2 404找不到action_看到这些404页面文案,就算网页打不开也值了
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【个人向】《HTTP图解》阅后小结
  • css属性的继承、初识值、计算值、当前值、应用值
  • IndexedDB
  • JavaScript设计模式之工厂模式
  • java中的hashCode
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • pdf文件如何在线转换为jpg图片
  • PermissionScope Swift4 兼容问题
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 从0到1:PostCSS 插件开发最佳实践
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 前端之React实战:创建跨平台的项目架构
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 鱼骨图 - 如何绘制?
  • const的用法,特别是用在函数前面与后面的区别
  • 阿里云服务器如何修改远程端口?
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #162 (Div. 2)
  • #stm32整理(一)flash读写
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (办公)springboot配置aop处理请求.
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (转)LINQ之路
  • *** 2003
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *1 计算机基础和操作系统基础及几大协议
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .naturalWidth 和naturalHeight属性,
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @Repository 注解
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [Android] Android ActivityManager