zoukankan
html css js c++ java
[转]Python下载百度新歌100的代码
#
!/usr/bin/python
#
-*- coding: utf-8 -*-
#
Copyright (c) 2006 UbuntuChina <http://www.ubuntu.org.cn>
#
License: GPLv2
#
Author: oneleaf <oneleaf AT gmail.com>
import
httplib
import
re
import
urllib
import
os
import
locale
def
getdownurl(url):
urllist
=
[]
conn
=
httplib.HTTPConnection(
'
mp3.baidu.com
'
)
conn.request(
"
GET
"
,url)
response
=
conn.getresponse()
html
=
response.read()
conn.close()
expression
=
'
http://220.181.27.54/m(.*)</a>
'
listSentence
=
re.findall(expression, html)
lineno
=
0
while
lineno
<
len(listSentence):
mp3url
=
re.search(
'
title=(.*)onclick
'
,listSentence[lineno])
if
mp3url:
mp3url
=
mp3url.group(0)
mp3url
=
re.search(
'
http(\S*)
'
,mp3url)
if
mp3url:
mp3url
=
mp3url.group(0)
try
:
mp3url
=
mp3url.decode(
'
gbk
'
)
except
:
pass
urllist.append(mp3url)
lineno
+=
2
return
urllist
def
downmp3(url,author,name,filelist):
filename
=
author
+
"
-
"
+
name;
for
i
in
filelist:
name
=
unicode(i,locale.getpreferredencoding())
if
name.find(filename)
==
0:
print
u
"
文件已经下载,忽略。
"
return
1
urllists
=
getdownurl(url)
for
i
in
urllists:
print
u
"
正在连接
"
,i
ext
=
i[
-
4
:]
try
:
urlopen
=
urllib.URLopener()
fp
=
urlopen.open(i)
data
=
fp.read()
fp.close()
filename
=
filename
+
ext;
file
=
open(filename,
'
w+b
'
)
file.write(data)
file.close()
print
u
"
下载成功!
"
return
1
except
:
continue
return
0
if
__name__
==
"
__main__
"
:
conn
=
httplib.HTTPConnection(
'
list.mp3.baidu.com
'
)
conn.request(
"
GET
"
,
'
/list/newhits.html?id=1
'
)
response
=
conn.getresponse()
html
=
response.read().decode(
'
gbk
'
)
conn.close()
expression
=
'
<a href="http://mp3.baidu.com/m(.*)</a>
'
listSentence
=
re.findall(expression, html)
lineno
=
0
while
lineno
<
len(listSentence):
url
=
re.search(
'
(.*)target
'
,listSentence[lineno])
url
=
'
/m
'
+
url.group(0)[:
-
8
]
name
=
re.search(
'
blank>(.*)
'
,listSentence[lineno])
name
=
name.group(0)[
6
:]
author
=
re.search(
'
blank>(.*)
'
,listSentence[lineno
+
1
])
author
=
author.group(0)[
6
:]
print
u
"
开始下载
"
,author,name
filelist
=
os.listdir(
'
.
'
);
if
downmp3(url,author,name,filelist)
==
0:
print
u
"
下载
"
,author,name,u
'
失败!
'
lineno
+=
2
查看全文
相关阅读:
如何为惠普笔记本ProBook 4431S清理电源风扇通风口灰尘
office app之 Mail App 从新建到发布
sublime_text3汉化,破解,安装Package_control支持中文显示
poj3126prime+BFS
android开发之欢迎界面
poj 1151 离散化
DbVisualizer 9 解决中文乱码问题
RS232、RS422与RS485串口标准简介
动态创建菜单和动态关联菜单项事件
更改路径
原文地址:https://www.cnblogs.com/maplye/p/450118.html
最新文章
HTML xmlns 属性
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句(转载)
C#中的委托和事件(转载)
[转载]Meta标签详解
如何动态调用WebServices
在sql语法里面定义变量
k阶原点距和k阶中心距各是说明什么数字特征
项目管理术语英汉对照表
计算机编程语言介绍(ObjectiveC)
质量保证与质量控制的区别
热门文章
资料查阅技巧分享
计算机编程语言介绍(Ruby)
计算机编程语言介绍(Perl)
计算机编程语言介绍(Python)
概率论与数理统计常用英文词汇对照
计算机编程语言介绍
tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
spring framework源码下载并导入eclipse
ORA3136 错误解决
大学里我必须要学好英语
Copyright © 2011-2022 走看看