学过python的帅哥都知道,爬虫是python的很是好玩的东西,并且python自带urllib、urllib二、requests等的库,为爬虫的开发提供大大的方便。html
此次我要用urllib2,爬一堆风景图片。node
先上重点代码python
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以后,就获得了页面的全部构成元素了ajax
1 if __name__=='__main__': 2 s = urllib2.urlopen('http://www.baidu.com/') 3 print(s.read(100))
read能够传参数,在这里是读取100个字符,结果以下:cookie
而后上面重点代码里的soup是一个BeautifulSoup对象,是一个第三方的用于html页面内容解析的库,当建立了一个BeautifulSoup对象以后,就能够用这个对象对html的内容进行解析,好比:ide
1 attr = { 2 'class':'pic', 3 } 4 nodes = soup.find_all('a',attr)
find_all()函数是查找全部符合参数条件的元素,上面的代码就是查找全部类名为pic的a元素,除了find_all以外,还有一个find元素,是查找符合条件的第一个元素,知道这两个函数以后,已经能够爬东西了。函数
import urllib2 from bs4 import BeautifulSoup def spider_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 in nodes: try: url_list.add(node['href']) except: pass for url in url_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() except Exception as e: print(e) pass def mkdir(path): # 引入模块 import os # 去除首位空格 path=path.strip() # 去除尾部 \ 符号 path=path.rstrip("\\") # 判断路径是否存在 # 存在 True # 不存在 False isExists=os.path.exists(path) # 判断结果 if not isExists: # 若是不存在则建立目录 print path+' 建立成功' # 建立目录操做函数 os.makedirs(path) return True else: # 若是目录存在则不建立,并提示目录已存在 print path+' 目录已存在' return False if __name__=='__main__': url_list = [ 'http://www.tooopen.com/img/90_894.aspx' ] i = 1 for url in url_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
爬图片的话,其实就是读取到图片以后,转成二进制数据以后,写入文件就好了,而后运行就能够了,而后就看到一堆图片在目录里oop
固然,这算是最基础,什么状况都没遇到,超顺利,随着你想爬更多东西,会发现有不少反爬虫的东西,好比cookie,验证码,ajax动态加载之类的,遇到这些东西,要爬的话,须要作更多更多的工做,固然,这么好玩的东西,作再多工做都是值得的。网站