上午起来提不起劲,于是就用电脑看漫画,但是在线看漫画好烦,就想下下来看。一个一个点太麻烦,于是花了点时间用python写了个demo,把爱漫画的漫画下载下来,这样就可以随时随地看了。这也是我首次尝试用python写不是数据处理的东西,还是很开心的。
      做的具体思路就是利用python提供的urllib,urllib2的内容来做的,其中辅助了正则表达式模块re,用来进行匹配。因为自己水平不咋地,代码有点乱。。
代码:

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import urllib as ub1
import urllib2 as ub2
import re

def downloadCartoon(bookurl,localdir):
    req = ub2.Request(bookurl)
    f = ub2.urlopen(req)
    for eachline in f:
        line = eachline.strip()     
        if re.match('.*下载.*',line):
            wordList = line.split('\"')
            downloadurl='http://www.bbhou.com/'+wordList[1]
            req1 = ub2.Request(downloadurl)#第2个是下载链接的页面URL地址,构造这个request,然后再次请求一个网页
            #跳转到下载的页面,再次请求并进行下载
            f1 = ub2.urlopen(req1)
            for item in f1:
                item2 = item.strip()               
                if re.match('.*zip',item2):
                    wl = item2.split('\"')   
                    localname = localdir+wl[3]+'.zip'                           
                    ub1.urlretrieve(wl[1],localname.decode('utf-8'))#利用下载链接,下载到本地
                    print localname.decode('utf-8')+' downloaded.'

def GetCartoon(url):
    #这里是漫画所有的列表,区域,这里循环获得每一卷的地址,然后调用上一个函数去进行下载
    rooturl = 'http://www.bbhou.com/' #这是漫画地址的根目录,后面的连接需要根据这个进行跳转
    request = ub2.Request(url)
    response = ub2.urlopen(request)   
    lsturl = []
    for every in response:
        line = every.strip()
        if re.match('.*/manhua/.*html.*',line):
            piclist = line.split('\"')
            for item in piclist:
                if re.match('.*html.*',item):
                    cururl = rooturl+item
                    lsturl.append(cururl)
    for url in lsturl:
        try:           
            downloadCartoon(url,'E:\\')
        except Exception,e:
            continue   
           
GetCartoon('http://www.bbhou.com/manhua/jinjidejuren/')

Python下载漫画的更多相关文章

  1. Python下载网页的几种方法

    get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...

  2. 【python 下载】-各种版本都有!

    python 是一种全功能的语言,2.7很稳定,成熟的版本,且有很多开源的模块. 小编个人觉得python有一个很大的优点,就是语法简练,甚至可以说简单.比起pascal或者 C什么的,简单的难以置信 ...

  3. Python下载Yahoo!Finance数据

    Python下载Yahoo!Finance数据的三种工具: (1)yahoo-finance package. (2)ystockquote. (3)pandas.

  4. [转] 三种Python下载url并保存文件的代码

    原文 三种Python下载url并保存文件的代码 利用程序自己编写下载文件挺有意思的. Python中最流行的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib ...

  5. 用python下载辞典

    用python下载词源词典Etymoline Online Etymology Dictionary是最好的 English 词源词典,现在来说没有之一.但是,一直在PC上查单词有时不是很方便,遂就想 ...

  6. 如何用python下载一张图片

    如何用python下载一张图片 这里要用到的主要工具是requests这个工具,需要先安装这个库才能使用,该库衍生自urllib这个库,但是要比它更好用.多数人在做爬虫的时候选择它,是个不错的选择. ...

  7. python下载安装BeautifulSoup库

    python下载安装BeautifulSoup库 1.下载https://www.crummy.com/software/BeautifulSoup/bs4/download/4.5/ 2.解压到解压 ...

  8. python下载安装requests库

    一.python下载安装requests库 1.到git下载源码zip源码https://github.com/requests/requests 2.解压到python目录下: 3.“win+R”进 ...

  9. python下载夏目友人帳

    python下载夏目友人帐 一般情况下我们使用爬虫更多的应该是爬数据或者图片吧,今天在这里和大家分享一下关于使用爬虫技术来进行视频下载的方法,不仅可以方便的下载一些体积小的视频,针对大容量的视频下载同 ...

随机推荐

  1. DedeCMS时间格式

    时间格式 {dede:field name='pubdate' function='strftime("%Y年%m月%d日 %H:%M:%S","@me")' ...

  2. 黑马程序员—C语言的特点和关键字

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- C语言的简介 一. C语言具有下列特点: C语言既具有低级语言直接操纵硬件的特点,又具有高级语言 ...

  3. ASP.NET 安全认证

    一. 新建一个测试项目 新建一个测试项目,包含三张页面(Default.aspx.Login.aspx.UserInfo.aspx).   二. 修改 Web.config 1.把<authen ...

  4. Node.js npm

    Node程序包管理器(NPM)提供了以下两个主要功能: 在线存储库的Node.js包/模块,可搜索 search.nodejs.org 命令行实用程序来安装Node.js的包,做版本管理和Node.j ...

  5. SharePoint 2013 WebTemplates

    SharePoint 2013 WebTemplates You are here: Home / SharePoint 2013 WebTemplates   January 24, 2013 Ta ...

  6. Yaroslav and Sequence

    Codeforces Round #182 (Div. 1) A:http://codeforces.com/contest/301/problem/A 题意:给你2*n-1个数,你每次可以选择n个连 ...

  7. Mysql中类似于nvl()函数的ifnull()函数

    IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. mysq ...

  8. IBM Websphere 说明文档

    http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.nd.doc%2Finfo%2F ...

  9. linux 里 /etc/passwd 、/etc/shadow和/etc/group 文件内容解释

    •/etc/passwd文件用于存放用户账户信息,每行代表一个账户,每个账户的各项信息用冒号分割,例如: root:x:::root:/root:/bin/bash username:password ...

  10. 【转】android开发中如何结束所有的activity

    原文网址:http://java--hhf.iteye.com/blog/1826880 每一个activity都有自己的生命周期,被打开了最终就要被关闭. 四种结束当前的activity方法 //关 ...