如何用python批量下载数据_Python实现批量下载文件
Python实现批量下载文件
#!/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]
其他网友的方法:
from os.path import basename
from urlparse import urlsplit
def url2name(url):
return basename(urlsplit(url)[2])
def download(url, localFileName = None):
localName = url2name(url)
req = urllib2.Request(url)
r = urllib2.urlopen(req)
if r.info().has_key('Content-Disposition'):
# If the response has Content-Disposition, we take file name from it
localName = r.info()['Content-Disposition'].split('filename=')[1]
if localName[0] == '"' or localName[0] == "'":
localName = localName[1:-1]
elif r.url != url:
# if we were redirected, the real file name we take from the final URL
localName = url2name(r.url)
if localFileName:
# we can force to save the file as specified name
localName = localFileName
f = open(localName, 'wb')
f.write(r.read())
f.close()
download(r'你要下载的python文件的url地址')
以上便是本文给大家分享的全部内容了,小伙伴们可以测试下哪种方法效率更高呢。
如何用python批量下载数据_Python实现批量下载文件相关推荐
- 如何用python爬股票数据_python爬虫股票数据,如何用python 爬虫抓取金融数据
Q1:如何用python 爬虫抓取金融数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为 ...
- python处理nc数据_python中的.nc文件处理 | 04 利用矢量边界提取NC数据
利用矢量边界提取.nc数据 import os import numpy as np import pandas as pd import matplotlib.pyplot as plt impor ...
- python怎么批量处理数据_python如何批量处理excel数据?_后端开发
php赋值运算符有哪些_后端开发 php赋值运算符有:1.[=]赋值运算符:2.[+=]加运算符:3.[-=]减运算符:4.[*=]乘运算符:5.[/=]除运算符:6.[.=]连接字符运算符:7.[% ...
- 用python处理excel表格_如何用python处理excel数据 | 用python处理excel表格数据类型
python 读取EXCEL文件中的数据格式 扩展库 xlrd 读excle xlwt 写excle 直上搜就能下载 下载后使用 import xlrd 就可以读excle了 打开文件: xls = ...
- python大数据分析实例-如何用Python分析大数据(以Twitter数据挖掘为例)
原标题:如何用Python分析大数据(以Twitter数据挖掘为例) 来源:艾翻译(http://www.itran.cc/) 原文标题:Twitter Data Mining: A Guide to ...
- Python 获取接口数据,解析JSON,写入文件
Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而 ...
- oracle批量插入报错,[数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA
[数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA 0 2020-08-19 08:00:06 Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-009 ...
- mysql 批量数据导入报错_Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA
Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-00933: SQL 命令未正确结束 问题:用mybaits 批量插入数据到Oracle 数据库的时候, 报错:ORA-00933 ...
- 如何用python批量下载数据_Python批量下载地理空间数据云数据!Python无所不能!...
模拟登录 这里要用到两个包:requests和json.requests使用前得先安装:pip install requests. In [3]: 进群:548377875 即可获取数十套PDF哦! ...
最新文章
- Android 10.0 PackageManagerService(三)APK扫描-[Android取经之路]
- Xen与KVM虚拟化技术调研报告
- 自底向上构建知识图谱全过程
- clone是深拷贝还是浅拷贝_go-clone:深拷贝 Go 数据结构
- 电大计算机网考选择题多少分,2016年度电大计算机网考选择题及标准答案.doc
- hdu 1241Oil Deposits(BFS)
- 计算机硬盘正在工作应特别注意避免,初级计算机考试题库
- 炸了!亚马逊薪资文件泄露!原来这么多人年薪百万
- .net 把一个对象赋值给一个参数_一个可以提升JVM运行性能的参数
- 搭建DNS服务,正向解析域名
- 拓端tecdat|R语言时间序列分解和异常检测方法应用案例
- linux mysql 客户端 服务端_MySQL客户端和服务器端工具集
- SSM汽车销售平台的设计与实现毕业设计源码171619
- pdf图片怎么转换成word文档?
- 适合苹果4s的微信版本_苹果:这些旧 iPhone 有重大缺陷,怕不怕?
- Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“(已解决)
- 单页面SPA(如react,vue)网站的服务器渲染SSR之SEO大杀器rendertron(超详细配置+避坑)
- usb与 hid, 串口 趣谈
- html加js动态效果图,JS动态图片的实现方法完整示例
- 【Python实验】Numpy基础
热门文章
- 二分法查找是基于有序_【二分查找】May1th “First Bad Version (Python3)”
- Unity中Web.Config文件的配置与调用
- 「懒惰的美德」我用 python 写了个自动生成给文档生成索引的脚本
- java兄弟_java实现兄弟孩子树代码
- 设计模式系列之九:职责链模式
- activemq 修改服务端端口61616和控制台端口8161启动
- [搬运] mac下安装GDB
- java线程异常终止_java线程莫名异常退出时,如何捕获异常信息
- HT for Web中3D流动效果的实现与应用
- 什么样的博文才能上首页呢?『博客使用技巧』