百度图片下载器
来源:互联网 发布:产品矩阵是什么意思 编辑:程序博客网 时间:2024/06/05 10:23
—————————————————————————————————————————————————————————————————————
今天搜索了一下图片发现百度上有许多自己喜欢的图片,于是就想把这些图片下载下来,但是如果一张一张的下载的话又太慢了,想了一下,自己写个爬虫吧!|
—————————————————————————————————————————————————————————————————————
GO!GO!GO!
先上代码:
# coding:utf-8import requestsimport reimport osimport shutilimport urllib2def getpage(url): response=requests.get(url).text urls=re.findall('"objURL":"(.*?)",',response,re.S) return urlsdef downimg(keyword,pagenums): path='E:\\picture' links=[] count=1 if pagenums>0: urls=['http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%s'%keyword+'&pn={}&ct=&ic=0&lm=-1&width=0&height=0'.format(str(i))for i in range(pagenums+1)] while urls: links=links+getpage(urls.pop(0)) if os.path.exists(path): shutil.rmtree(path) print '目录删除!' os.mkdir(path) print '新建目录!' while links: try: print'正在下载第',count ,'张' img=urllib2.urlopen(links.pop(0)).read() # img=requests.get(links.pop(0)).text 再次注释一下,据说使用python2.7和requests结合的时候会有编码问题 with open(path+'\\'+str(count)+'.jpg','wb')as f: f.write(img) count+=1 except : print urllib2.URLError.reason continue print '下载完毕!'inputwd=raw_input("请输入关键字:")inputnum=int(raw_input("需要下载多少页呢:"))downimg(inputwd,inputnum)
我们一点一点的来解析代码:
1.
这里用了re.findall()方法,方法的作用是根据正则表达式匹配文本,返回的是匹配到了的结果的列表。
第一个参数是正则表达式,第二个参数是待匹配的文本,re.S意为多行匹配,因为re正则表达式默认
匹配是一行匹配的,也就是说在一行中查找匹配的文本,若没匹配到则换一行,使用了re.S后就是多
行匹配了
—————————————————————————————————————————————————————————————————————————————
2.
这里是存储图片的目录,需提醒的是‘\\’,第一个‘\’代表转义
—————————————————————————————————————————————————————————————————————————————
3.
这一句的作用是将pagenums个url装入列表urls中,其中从'http'到kewword这里%keyword的值用于替换%s,后边的format(str(i)) for i in range(pagenums+1)],其中i用于替换字符串中的{},而且i是经过format变化的,这样就生成了多个url
—————————————————————————————————————————————————————————————————————————————
4.
两个列表相加是将一个列表中的元素添加到另一个列表中,列表.append(列表)则是将一个列表添加到另一个列表中作为元素
—————————————————————————————————————————————————————————————————————————————
5.
shutil模块的rmtree不管文件夹中是否有文件都能删除,而os.remover(path)只能删除空文件夹
—————————————————————————————————————————————————————————————————————————————
6.
这里到了解决刚才的问题了,我们知道urllib2模块和requests模块都是为网络请求儿生的,但是需要特别注意下
在python2.7中使用requests获取网络资源的时候,如果网络资源中含有中文,可能会报编码错误
—————————————————————————————————————————————————————————————————————————————
7.
对获取的文件进行写入,其中‘w’代表写操作,‘b’代表以二进制的方式写入
ok啦今天的分析就到这里啦,谢谢大家,欢迎大家来留言!!!!!!!!!!!
—————————————————————————————————————————————————————————————————————————————
- 百度图片下载器
- 百度贴吧自动图片下载爬虫
- 爬虫实例:从百度图片下载壁纸
- 多线程批量图片下载器
- 图片下载器类
- android图片下载器
- 图片下载
- 图片下载
- 图片下载
- 图片下载
- 图片下载
- 网络请求----简单框架使用------(百度图片下载实例)
- C#开发 GOOGLE 图片下载器
- (案例四)图片下载器爬虫
- 批量图片下载器(整站下载)
- 设计图片下载器的过程以及问题
- Python网络爬虫(三):图片下载器
- 图片下载(仅限图片下载)
- Ubuntu云服务器tp框架遇到failed to open stream: Permission denied问题
- 1013. 数素数 (20)
- windows server 2012清除并重建SID(2016类似)
- 泛型算法
- Java并发工具类之Semaphore
- 百度图片下载器
- 接口实现模拟器
- python defacultdict
- 20171026-大胆,再大胆些
- servlet如何判断是哪个表单传来的数据???
- Centos配置ssh免密码互信登录
- Codeforces Round #442 (Div. 2)【solved : 6 / 6】
- selenium自动化(一)
- 基于GitHub搭建Hexo静态博客