制作爬虫的基本步骤
环境 pyton 3.7
顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤。
一般来说,制作一个爬虫需要分以下几个步骤:
- 分析需求
- 分析网页源代码,配合F12(没有F12那么乱的网页源代码,你想看死我?)
- 编写正则表达式
- 正式编写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)