返回顶部

收藏

批量下载51voa的文本和MP3

更多

test.py 文件 测试用

! /usr/bin/env python

from Myvoa import *

temp=Myvoa()

temp.geturls()

temp.dlurls()

Myvoa.py文件 主要为Myvoa class

#! /usr/bin/env python
import os
import sys
import urllib.request as req
class Myvoa:
    '''
    download texts and mp3 of <a href="http://www.51voa.com">http://www.51voa.com
    '''
    def __init__(self):
        self.basicurl="<a href="http://www.51voa.com">http://www.51voa.com"
        self.basicdir=os.curdir
        self.urls=[]

    def savefile(self,name,url=-1,data=-1):
        path=os.curdir
        name=name.replace(os.sep,'')
        target=path+os.sep+name
        print(target)
        if os.path.isfile(target):
            pass
        else:            
            if url!=-1:
                fp=open(path+os.sep+name,'wb')
                try:
                    res=req.urlopen(url)
                    fp.write(res.read())
                finally:
                    fp.close()
            elif data!=-1:
                fp=open(path+os.sep+name,'w')
                try:
                    print(len(data))
                    data=data.replace(r"\\n",'')
                    data=data.replace("<br />",'\\n')
                    linestart='<p>'
                    lineend='</p>'
                    i=data.find(linestart)
                    temp=[]
                    while(i!=-1):                
                        j=data.find(lineend)
                        temp=data[i+3:j]
                        fp.write(temp+'\\n')               
                        data=data[j+4:]
                        i=data.find(linestart)                
                finally:
                    fp.close()

    def dlvoa(self,url):        
        res=req.urlopen(url)
        data=res.read()
        res.close()
        startag='''<div id="title">'''
        endtag='''<div id="Bottom_VOA">'''
        data=str(data)
        data2=data[data.find(startag)+16:data.find(endtag)]
        title=data2[:data2.find("</div>")]
        mp3url=self.basicurl+data2[data2.find('''<a href="''')+9:data2.find('''.mp3">''')+4]
        self.savefile(title+'.mp3',url=mp3url)
        self.savefile(title+'.txt',data=data2)

    def geturls(self):
        exurl="/VOA_Standard_English"
        res=req.urlopen(self.basicurl+exurl)
        data=res.read()
        res.close()
        startag='''<ul><li>'''
        endtag='''</li></ul>'''
        data=str(data)
        data=data[data.find(startag)+8:data.find(endtag)]
        linestart='<a href='
        lineend='target='
        i=data.find(linestart)
        while(i!=-1):
            j=data.find(lineend)
            self.urls=self.urls+[self.basicurl+data[i+9:j-2]]
            data=data[j+5:]
            i=data.find(linestart)

    def dlurls(self):
        if self.urls==[]:
            self.geturls()
        list(map(self.dlvoa,self.urls))
#该片段来自于http://outofmemory.cn

标签:python,网络

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. Larry 发表 2015-09-15 02:22:22 Python网络攻防之第二层攻击
  2. linux@linux.cn (linu 发表 2017-11-03 13:45:33 三种 Python 网络内容抓取工具与爬虫
  3. 博主 发表 2017-04-10 00:00:00 Python 网络编程
  4. cold 发表 2013-04-15 08:09:00 使用Tornado进行网络异步编程
  5. 博主 发表 2014-11-12 00:00:00 Python学习笔记(二)网络编程的简单示例
  6. Null 发表 2014-03-23 10:43:58 乱发数据包
  7. 博主 发表 2013-04-13 07:00:00 python(urllib,re,beautifulsoup) web网络操作
  8. tst 发表 2015-10-24 16:34:17 reGeorg内网渗透urllib3安装
  9. caroline@linux.cn (c 发表 2016-10-18 01:30:00 [图灵赠书]《Python网络编程(第3版)》点评赠书
  10. 博主 发表 2012-12-02 08:00:00 python小练习:网络视频下载
  11. zhu329599788@126 发表 2016-12-02 10:14:28 开源Python网络爬虫框架Scrapy
  12. Null 发表 2014-10-01 10:48:23 简单的 SSTP 服务器

发表评论