python使用urllib模块开发的多线程豆瓣小站mp3下载器

代码如下:

#! /usr/bin/python2.7
# -- coding:utf-8 --

import os, urllib,urllib2, thread,threading
import re

#匹配音乐url
reg=re.compile('{"name":"(.+?)".+?"rawUrl":"(.+?)",.+?}', re.I)

class downloader(threading.Thread):
        def __init__(self, url, name):
                threading.Thread.__init__(self)
                self.url=url
                self.name=name

def run(self):
                print 'downloading from %s' % self.url
                urllib.urlretrieve(self.url, self.name)

threads=[]

#多线程下载文件
def main(url):
        response=urllib.urlopen(url)
        text=response.read()
        groups=re.finditer(reg, text)
        for g in groups:
                name=g.group(1).strip() + ".mp3"
                path=g.group(2).replace('\\', '')
                t=downloader(path, name)
                threads.append(t)
                t.start()

if __name__ == '__main__':
        main("http://site.douban.com/huazhou/")
        for t in threads:
                t.join()

(0)

相关推荐

  • Python读取mp3中ID3信息的方法

    本文实例讲述了Python读取mp3中ID3信息的方法.分享给大家供大家参考.具体分析如下: pyid3不好用,常常有不认识的. mutagen不错,不过默认带的easyid3不会读取注释,需要手工hack一下 Python代码如下: from mutagen.mp3 import MP3 import mutagen.id3 from mutagen.easyid3 import EasyID3 EasyID3.valid_keys["comment"]="COMM::'X

  • asp.net音频转换之.amr转.mp3(利用七牛转换法)

    前言 相信大家应该都知道吧,.amr格式用于移动设备的音频,压缩比比较大,多用于人声.通话,效果还行!所以,移动设备多采用amr格式来进行录存!比较常见的例子:通话录音,微信语音以及录音等! 但是这个鬼,用两个字来形容,就是"蛋疼":因为HTML5压根就不支持它(amr:我是个<孤儿> ,导演:佐米·希尔拉):所以,试听效果也就很难实现了!虽然微信是提供试听的,但一旦离开了页面,那就意味着,你再也无法播放你的录音了! 所以你不得不将文件转换下格式! 目前,小编掌握的转换格式

  • C++实现显示MP3文件信息的方法

    本文实例讲述了C++实现显示MP3文件信息的方法.分享给大家供大家参考.具体实现方法如下: /** * This is small example how to use libZPlay library to play files. * This example is using OpenFile functions to open disk files and play. */ #define WIN32_LEAN_AND_MEAN #include <windows.h> #include

  • Asp.Net 音频文件上传和播放代码

    一.音频文件上传和播放 在网上找到一个名叫AspNetPager的第三方控件,将AspNetPager.dll文件引用到项目的Bin中.在网页中可直接调用.引用命名空间 using Telerik.WebControls; >>上传 复制代码 代码如下: protected void Button1_Click(object sender, EventArgs e) { foreach (UploadedFile file in RadUploadContext.Current.Uploade

  • C#实现简单播放mp3的方法

    本文实例讲述了C#实现简单播放mp3的方法.分享给大家供大家参考.具体实现方法如下: /// <summary> /// 测试 /// </summary> class TestDemo { public void Test() { clsMCI cm = new clsMCI(); cm.FileName = "alarm.mp3"; cm.play(); } } /// <summary> /// clsMci 的摘要说明. /// </s

  • C#定义的MP3播放类实例

    本文实例讲述了C#定义的MP3播放类.分享给大家供大家参考.具体分析如下: 这里使用C#定义一个MP3播放类,将Mp3文件作为资源文件包含到项目中,就可以播放mp3了 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Runtime.InteropService

  • java实现酷狗音乐临时缓存文件转换为MP3文件的方法

    本文实例讲述了java实现酷狗音乐临时缓存文件转换为MP3文件的方法.分享给大家供大家参考,具体如下: 酷狗临时缓存文件,其实已经是吧MP3文件下载好了,只是名字看上去好像是通过md5算法重命名的. 酷狗在缓存文件的时候会同时缓存歌词.这个程序就是根据md5管理对应的歌词文件和缓存文件,然后把缓存文件改成 歌曲名+.mp3格式. 原谅我取这么长也不知道对不对的类名. package com.zhou.run; import java.io.File; import java.util.HashM

  • python实现定时播放mp3

    程序很简单,主要是 mp3play 模块的应用 import mp3play, time filename = "Should It Matter.mp3" clip = mp3play.load(filename) while 1: if time.localtime().tm_min % 30 == 0: clip.play() print "\nStart to play" time.sleep(clip.seconds()) clip.stop() prin

  • java实现mp3合并的方法

    本文实例讲述了java实现mp3合并的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package test; import java.io.*; import java.util.*; public class Test6 {     public static void main(String[] args) throws Exception     {         String s = "D:/out.mp3"; // 输出目录 & 文件名  

  • python使用urllib模块开发的多线程豆瓣小站mp3下载器

    复制代码 代码如下: #! /usr/bin/python2.7# -- coding:utf-8 -- import os, urllib,urllib2, thread,threadingimport re #匹配音乐urlreg=re.compile('{"name":"(.+?)".+?"rawUrl":"(.+?)",.+?}', re.I) class downloader(threading.Thread):  

  • python中urllib模块用法实例详解

    本文实例讲述了python中urllib模块用法.分享给大家供大家参考.具体分析如下: 一.问题: 近期公司项目的需求是根据客户提供的api,我们定时去获取数据, 之前的方案是用php收集任务存入到redis队列,然后在linux下做一个常驻进程跑某一个php文件, 该php文件就一个无限循环,判断redis队列,有就执行,没有就break. 二.解决方法: 最近刚好学了一下python, python的urllib模块或许比php的curl更快,而且简单. 贴一下代码 复制代码 代码如下: #

  • 【Python】Python的urllib模块、urllib2模块批量进行网页下载文件

    由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的urllib模块和ulrllib2模块. 1.问题描述 需要从http://www.cvpapers.com/cvpr2014.html上下载几百个论文的PDF文件,该网页如下图所示: 2.问题解决 通过结合Python的urllib模块和urllib2模块来实现自动下载.代码如下: test.py #!

  • Python使用urllib模块对URL网址中的中文编码与解码实例详解

    URL网址链接中的中文编码说明 中文的gbk(GB2312)编码: 一个汉字对应两组%xx,即%xx%xx 中文的UTF-8编码: 一个汉字对应三组%xx,即%xx%xx%xx 可以利用百度进行URL编码解码 默认gbk https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD python3编码解码示例 # -*- coding: utf-8 -*- # @File : urldecode_demo.py # @Date : 2018-05-11 from u

  • Python利用socket模块开发简单的端口扫描工具的实现

    一.socket 1.简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. socket的工作流程 socket 采用C/S 模式,分为服务端和客户端 服务端数据处理流程 创建socket -> 绑定到地址和端口 -> 等待连接 -> 开始通信-> 关闭连接 客户端数据处理流程 创建socket -> 等待连接 -> 开始通信-> 关闭连接 客

  • 用python基于appium模块开发一个自动收取能量的小助手

    导语 ​ 昨天楼下买东西,超市老板居然让我加他支付宝好友???? 嗯哼!对啦,我也很疑惑来着!! 当时以为是方便下次买东西,哦吼也没多想,早上起来睁着我睡眼惺忪的熊猫眼,完了,我的能量都被偷完了! 对!今天木木子教大家种"树"!大家还记得蚂蚁森林叭,轻轻松松手机上就可以种树了! ​ 正文 本文是基于appium模块开发的自动收取能量的小助手! 参数配置如下: desired_caps = { "platformName": "Android",

  • python生成器/yield协程/gevent写简单的图片下载器功能示例

    本文实例讲述了python生成器/yield协程/gevent写简单的图片下载器功能.分享给大家供大家参考,具体如下: 1.生成器: '''第二种生成器''' # 函数只有有yield存在就是生成器 def test(i): while True: i += 1 res = yield i print(res) i += 1 return res def main(): t = test(1) # 创建生成器对象 print(next(t)) # next第一次执行从上到下,yield是终点 p

  • python爬虫 urllib模块发起post请求过程解析

    urllib模块发起的POST请求 案例:爬取百度翻译的翻译结果 1.通过浏览器捉包工具,找到POST请求的url 针对ajax页面请求的所对应url获取,需要用到浏览器的捉包工具.查看百度翻译针对某个字条发送ajax请求,所对应的url 点击clear按钮可以把抓包工具,所抓到请求清空 然后填上翻译字条发送ajax请求,红色框住的都是发送的ajax请求 抓包工具All按钮代表 显示抓到的所有请求 ,包括GET.POST请求 .基于ajax的POST请求 XHR代表 只显示抓到的基于ajax的P

  • python使用urllib模块和pyquery实现阿里巴巴排名查询

    urllib基础模块的应用,通过该类获取到url中的html文档信息,内部可以重写代理的获取方法 复制代码 代码如下: class ProxyScrapy(object):    def __init__(self):        self.proxy_robot = ProxyRobot()        self.current_proxy = None        self.cookie = cookielib.CookieJar() def __builder_proxy_cooki

  • Python使用urllib模块的urlopen超时问题解决方法

    在新的公司开始上班,今天工作的主题内容是市场部门需要抓取一些论坛用户的邮箱,以便发送营销邮件. 于是用了一个python脚本来执行,前面抓了几个都没有什么问题,后来碰到一个论坛,在执行urlopen的地方总是提示超时,百度了一下,因为我使用的是urllib不是urllib2,所以无法直接在urlopen里面加timeout参数,只能是设置全局脚本的超时时间 首先: 复制代码 代码如下: import socket 然后: 复制代码 代码如下: socket.setdefaulttimeout(6

随机推荐