一般常用爬虫下载文本,图片,视频,声音。此处以下载图片为例,图片也是相对最容易。
#-*- coding:utf-8 -*-import os,re,requests#获取图片链接(以百度图片为例,因为部分参考了voidsky_很有趣儿的爬虫分享)keyword=raw_input('please input what you want to serch:')url='https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+keyword+'&ct=201326592&ic=0&lm=-1&width=&height=&v=flip'page=requests.get(url).textpic_link=re.findall('"objURL":"(.*?)",',page,re.S)#将图片文件写入本地i=1for item in pic_link:#需要添加捕获异常,因为不是所有图片都能下载 try: pic=requests.get(item).content except requests.exceptions.ConnectionError: print 'Sorry.The current pic is not avilible.' continue filename=str(i)+('.jpg') path=os.path.join('F:','001',filename)#这个地址是我电脑的地址,可修改输出地址 file=open(path,'wb') file.write(pic) file.close() print ('have down', i) i+=1print ('download' ,i-1)
总结和反思:
1、url变量本身就是str类型,无需纠结‘ ’或“ ”;2、requests.get().text 获取了链接地址的源代码文本; requests.get().text 获取链接地址的二进制内容,用于将图片,声音,视频等写入这些文件中;3、涉及这样批量下载,需要处理捕获异常,不然程序就会在出错处中断,不会继续运行;4、continue 使得程序即使报错了,也能继续下一个循环,即图片下载;5、在正则匹配中re.S参数设置,表示把字符串当做一个整体,n也当做字符串而不是换行,不因换行而重新匹配,可跨行匹配,。6、MP3、MP4格式的文件下载,只要抓包或者F12得到请求链接,那么将上面的程序稍稍改动一下,即可下载。比如:只要能试听,就会有链接。声明:部分参考了voidsky_很有趣儿的爬虫分享: