学过python的帅哥都知道,爬虫是python的非常好玩的东西,而且python自带urllib、urllib2、requests等的库,为爬虫的开发提供大大的方便。
这次我要用urllib2,爬一堆风景图片。
先上重点代码
1 response =urllib2.urlopen(url).read()2 soup =BeautifulSoup(3 response, #html字符串
4 'html.parser', #html解析器
5 from_encoding='utf-8' #字符编码
6 )
其中,urlopen就顾名思义了,可以简单理解为打开一个url,然后获得该URL相对应的东西在python里的对象,然后通过read之后,就得到了页面的所有构成元素了
1 if __name__=='__main__':2 s = urllib2.urlopen('http://www.baidu.com/')3 print(s.read(100))
read可以传参数,在这里是读取100个字符,结果如下:
然后上面重点代码里的soup是一个BeautifulSoup对象,是一个第三方的用于html页面内容解析的库,当创建了一个BeautifulSoup对象之后,就可以用这个对象对html的内容进行解析,比如:
1 attr ={2 'class':'pic',3 }4 nodes = soup.find_all('a',attr)
find_all()函数是查找所有符合参数条件的元素,上面的代码就是查找所有类名为pic的a元素,除了find_all之外,还有一个find元素,是查找符合条件的第一个元素,知道这两个函数之后,已经可以爬东西了。
importurllib2from bs4 importBeautifulSoupdefspider_image(url,pre_filename):
response=urllib2.urlopen(url).read()
soup=BeautifulSoup(
response,#html字符串
'html.parser', #html解析器
from_encoding='utf-8' #字符编码
)
attr={'class':'pic',#'page':'2'
}
nodes= soup.find_all('a',attr)
url_list=set()for node innodes:try:
url_list.add(node['href'])except:pass
for url inurl_list:
img_html=urllib2.urlopen(url).read()
soup=BeautifulSoup(
img_html,#html字符串
'html.parser', #html解析器
from_encoding='utf-8' #字符编码
)
img_url= soup.find('img',id="imgView")
img_name= img_url['alt']try:
img= urllib2.urlopen(img_url['src']).read()print(u'正在下载图片:'+img_name)
fout= open(pre_filename+img_name+'.jpg','wb')
fout.write(img)
fout.close()exceptException as e:print(e)pass
defmkdir(path):#引入模块
importos#去除首位空格
path=path.strip()#去除尾部 \ 符号
path=path.rstrip("\\")#判断路径是否存在
#存在 True
#不存在 False
isExists=os.path.exists(path)#判断结果
if notisExists:#如果不存在则创建目录
print path+'创建成功'
#创建目录操作函数
os.makedirs(path)returnTrueelse:#如果目录存在则不创建,并提示目录已存在
print path+'目录已存在'
returnFalseif __name__=='__main__':
url_list=['http://www.tooopen.com/img/90_894.aspx']
i= 1
for url inurl_list:print(u'现在开始下载第'+str(i)+u'个网站的图片')#定义要创建的目录
mkpath='F:\\spider'+str(i)#调用函数
mkdir(mkpath)
spider_image(url,'F://spider//spider_image'+str(i)+'//')
i= i + 1
爬图片的话,其实就是读取到图片之后,转成二进制数据之后,写入文件就行了,然后运行就可以了,然后就看到一堆图片在目录里
当然,这算是最基础,什么情况都没遇到,超顺利,随着你想爬更多东西,会发现有很多反爬虫的东西,比如cookie,验证码,ajax动态加载之类的,遇到这些东西,要爬的话,需要做更多更多的工作,当然,这么好玩的东西,做再多工作都是值得的。