提取多媒体文件

本文为
痛点就是起点
原创文章,可以随意转载,但需注明出处。
利用 python 爬取多媒体文件,存储它们有两种方式,一是只存储 url 链接,二是将文件下载下来。存储文件链接可以将文件的链接信息存储到 json 文件或 csv 文件;下载文件需要用到 urllib 模块提供的 urlretrieve() 函数,urlretrieve() 函数可以将远程数据下载到本地。
urlretrieve(url,filename=None,reporthook=None,data=None,context=None)
参数 filename 是指存储的本地路径;reporthook 是一个回调函数,当连接到服务器以及传输完毕相应的数据块,会调用该回调函数,一般用于显示下载进度。
以爬取天堂网图片为例 http://www.ivsky.com/tupian/ziranfengguang/,下载图片的代码如下所示:
import urllib
from lxml import etree
import requests
def schedule(blocknum, blocksize, totalsize):
per = 100.0 * blocknum * blocksize / totalsize
if per > 100:
per = 100
print "当前下载进度: %d" % per
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " \
"Chrome/71.0.3578.98 Safari/537.36"
headers = {"User-Agent": user_agent}
req = requests.get("http://www.ivsky.com/tupian/ziranfengguang/", headers=headers)
html = etree.HTML(req.text)
img_urls = html.xpath(".//img/@src")
i = 0
for img_url in img_urls:
urllib.urlretrieve(img_url, ".images/img"+str(i)+".jpg", schedule)
i += 1