Bootstrap

python爬虫实战(一)做个图片自动下载器

制作爬虫的基本步骤

环境 pyton 3.7

顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤。

一般来说,制作一个爬虫需要分以下几个步骤:

  1. 分析需求
  2. 分析网页源代码,配合F12(没有F12那么乱的网页源代码,你想看死我?)
  3. 编写正则表达式
  4. 正式编写python爬虫代码

效果: 

恩,让我输入关键词,让我想想,输入什么好呢?好像有点暴露爱好了。

好了,差不多就是这么个东西。

需求分析

"我想要图片,我又不想上网搜“
"最好还能自动下载"
……

这就是需求,好了,我们开始分析需求,至少要实现两个功能,一是搜索图片,二是自动下载。

这就是需求,好了,我们开始分析需求,至少要实现两个功能,一是搜索图片,二是自动下载。

首先,搜索图片,最容易想到的就是爬百度图片的结果,好,那我们就上百度图片看看

基本就是这样,还挺漂亮的。

好了,我们已经看到了很多图片了,如果我们能把这里面的图片都爬下来就好了。我们看见网址里有关键词信息

下个问题就是如何实现自动下载,其实利用之前的知识,我们知道可以用request,获取图片的网址,然后把它爬下来,保存成.jpg就行了。

其他都简单,直接上代码:

#-*- coding:utf-8 -*-
import re
import requests

def dowmloadPic(html,keyword):


    pic_url = re.findall('"objURL":"(.*?)",',html,re.S)
    i = 0
    print ('找到关键词:'+keyword+'的图片,现在开始下载图片...')
    for each in pic_url:
        print ('正在下载第'+str(i+1)+'张图片,图片地址:'+str(each))
        try:
            pic= requests.get(each, timeout=10)
        except requests.exceptions.ConnectionError:
            print ('【错误】当前图片无法下载')
            continue
        string = 'pictures\\'+keyword+'_'+str(i) + '.jpg'
        #resolve the problem of encode, make sure that chinese name could be store
        fp = open(string,'wb')
        fp.write(pic.content)
        fp.close()
        i += 1

if __name__ == '__main__':
    word = input("Input key word: ")
    url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+word+'&ct=201326592&v=flip'
    result = requests.get(url)
    dowmloadPic(result.text,word)
 

 

 

 

;