rs6000

crawler_meizitu_02_class

Feb 13th, 2017
792
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.80 KB | None | 0 0
  1. '''
  2. author:smilehsu
  3. blog:smilehsu.cc
  4. requirements:Windows7、python3.52
  5. '''
  6.  
  7. import os, re, requests, shutil
  8. from bs4 import BeautifulSoup
  9.  
  10. #base_url='http://meizitu.com/a/'
  11.  
  12. all_link=[]
  13. error_page=[]
  14. dir_path='d:\meizitu'
  15.  
  16. class meizitu():
  17.  
  18.     def all_url(self,url,maxpage):
  19.         for i in range(1,maxpage+1):
  20.             page_url=url+str(i)+'.html'
  21.             all_link.append(page_url)
  22.        
  23.         for p in all_link:
  24.             html=self.request(p)
  25.             soup=BeautifulSoup(html.text,'lxml')
  26.            
  27.             try:
  28.                 #取得頁面的title跟該頁面的圖片連結
  29.                 title=soup.find('div',{'class':'metaRight'}).find('a')
  30.                 #取得圖片連結
  31.                 img_url=soup.find('div',{'class':'postContent'}).find_all('img')
  32.                 #測試用 印出頁面的title
  33.                 print(title.text)
  34.                 #測試用
  35.                 #print(len(img_url),img_url)
  36.                 #要存圖片的資料夾檔名就用頁面的title
  37.                 dirname=title.text
  38.                 #建立資料夾
  39.                 self.mkdir(dirname)
  40.                 #儲存圖檔
  41.                 self.save(img_url)
  42.                
  43.             except:
  44.                 print('error: {}'.format(p))
  45.                 error_page.append(p)
  46.                 pass
  47.            
  48.     def request(self,url):
  49.         headers = {'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
  50.         res = requests.get(url, headers=headers,stream=True)
  51.         res.encoding='gb2312'
  52.         return res
  53.    
  54.     def mkdir(self, dirname):
  55.         dirname=dirname.strip()
  56.         isExists = os.path.exists(os.path.join(dir_path, dirname))
  57.         mydir_path=os.path.join(dir_path, dirname)
  58.  
  59.        
  60.         if not isExists:
  61.             print('建立資料夾:'+mydir_path)
  62.             os.makedirs(mydir_path)
  63.             os.chdir(mydir_path)
  64.             return True
  65.  
  66.         else:
  67.             print('資料夾已存在'+mydir_path)
  68.             os.chdir(mydir_path)
  69.             return False
  70.    
  71.     def save(self, img_url):
  72.         for pic in img_url:
  73.             #路徑check
  74.             #print('目前工作目錄:'+os.getcwd())
  75.             #頁面裡的圖片連結
  76.             pic_src=pic['src']
  77.             print('要下載的圖檔連結'+pic_src)
  78.             #下載圖片後要存檔的檔名
  79.             #pic_name=dir_name+'_'+pic_src.split('/')[-1]
  80.             pic_name=pic_src.split('/')[-1]
  81.             #下載圖片
  82.             get_pic=self.request(pic_src)
  83.             f=open(pic_name,'wb')
  84.             shutil.copyfileobj(get_pic.raw,f)
  85.             f.close()
  86.             del get_pic
  87.  
  88. Meizitu=meizitu()
  89. Meizitu.all_url(url='http://meizitu.com/a/',maxpage=5)
Add Comment
Please, Sign In to add comment