返回顶部

收藏

批量下载文件

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

from gevent import monkey
monkey.patch_all()
from gevent.pool import Pool
import requests
import sys
import os

def download(url):
    chrome = 'Mozilla/5.0 (X11; Linux i86_64) AppleWebKit/537.36 ' + \
        '(KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36'
    headers = {'User-Agent': chrome}
    filename = url.split('/')[-1].strip()
    r = requests.get(url.strip(), headers=headers, stream=True)
    with open(filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk:
                f.write(chunk)
                f.flush()
    print filename, "is ok"

def removeLine(key, filename):
    os.system('sed -i /%s/d %s' % (key, filename))

if __name__ == "__main__":
    if len(sys.argv) == 2:
        filename = sys.argv[1]
        f = open(filename, "r")
        p = Pool(4)
        for line in f.readlines():
            if line:
                p.spawn(download, line.strip())
                key = line.split('/')[-1].strip()
                removeLine(key, filename)
        f.close()
        p.join()
    else:
        print 'Usage: python %s urls.txt' % sys.argv[0]

标签:python

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 博主 发表 2016-11-30 13:56:22 MarkdownPicPicker - Markdown 图片上传助手
  2. 博主 发表 2016-11-30 13:56:15 可爱的豆子——使用Beans思想让Python代码更易维护
  3. 博主 发表 2016-12-04 12:24:13 如果我提前起床,闹钟你就别响
  4. 博主 发表 2016-12-04 13:31:26 用图像识别来自动确认网页加载成功
  5. 博主 发表 2017-01-07 07:45:31 30秒找到藏在家里的手机
  6. 博主 发表 2017-02-05 15:59:29 技巧收集-M1701
  7. 博主 发表 2017-04-17 13:25:32 Python 装饰器装饰类中的方法
  8. 博主 发表 2017-06-11 08:58:41 记住变量类型的三种方式
  9. 博主 发表 2017-07-21 13:58:39 Tenacity——Exception Retry 从此无比简单
  10. 博主 发表 2017-09-22 14:54:39 技巧收集-M1709
  11. 博主 发表 2017-10-27 15:27:17 TeamFlowy——结合Teambition与Workflowy
  12. 博主 发表 2017-12-10 08:02:50 使用有限状态机原理实现英文分词

发表评论