Python爬蟲-萌妹子圖片

  • 2019 年 10 月 10 日
  • 筆記

最近發現一個可以看圖的地方,一張張翻有點累,畢竟只有一隻手(難道滑鼠還能兩隻手翻?)。能不能下到電腦上看呢,畢竟不用等網速,還可以預覽多張,總之很方便,想怎麼就怎麼,是吧?

剛好這幾天在學python,剛好拿來試試手。

程式碼注釋很詳細就不做解釋了。程式碼比較丑,有建議隨便提,反正我也不改。

import requests as re  from bs4 import BeautifulSoup  import os  #import threading    #定義一個爬去圖片的類  class Spider:      # 傳入圖片地址,文件名,保存單張圖片      def saveImg(self, imageURL, fileName):          u = re.get(imageURL)          data = u.content          f = open(fileName, 'wb')          f.write(data)          f.close()        def saveBrief(self, content, name):          fileName = name + "/" + name + ".txt"          f = open(fileName, "w+")          f.write(content.encode('utf-8'))      #創建新目錄      def mkdir(self,path):          path = path.strip()          # 判斷路徑是否存在          # 存在     True          # 不存在   False          isExists=os.path.exists(path)          # 判斷結果          if not isExists:              # 如果不存在則創建目錄              # 創建目錄操作函數              os.makedirs(path)              return True          else:              # 如果目錄存在則不創建,並提示目錄已存在              return False      #下載每期的圖片,並放入以標題為名字的目錄中      def GetDeatilPage(self, url,encodeing="utf-8",folder=""):          res = re.get(url)          res.encoding=encodeing          soup = BeautifulSoup(res.text, "html.parser")          imgs = soup.select("article.article-content > p > img")#根據元素匹配所有的圖片地址          if(len(imgs)>0):              #檢查目錄是否存在,不存在就創建              if(folder!=""):                  folder=folder+"\"              self.mkdir(folder+imgs[0].attrs.get("alt"))#創建目錄              i=1              for img in imgs:                  imgurl = img.attrs.get("src")#獲取圖片路徑                  self.saveImg(imgurl, img.attrs.get("alt")+"\"+str(i)+".jpg")#保存圖片                  i=i+1      #獲取頁面上所有的期數連接      def GetAllPageUrl(self,url):          res=re.get(url)          soup=BeautifulSoup(res.text, "html.parser")          urls=soup.select("div.excerpts > article.excerpt > a.focus")          return [a.attrs.get('href') for a in urls]      def loop(i):      spider=Spider()      urls=spider.GetAllPageUrl("http://www.52rkl.cn/mengmeizi/list_51_"+str(i)+".html")      for url in urls:          spider.GetDeatilPage(url)    for i in range(1,25):      loop(i)      # threading.Thread(target=loop,args=(i),).start()      # threading.Thread(target=loop,args=((i)*3+1),).start()      # threading.Thread(target=loop,args=((i+1)*3+1,)).start()      # threading.Thread(target=loop,args=((i+2)*3+1),).start()      # threading.Thread(target=loop,args=((i+3)*3+1),).start()      # threading.Thread(target=loop,args=((i+4)*3+1),).start()      # threading.Thread(target=loop,args=((i+5)*3+1),).start()      # threading.Thread(target=loop,args=((i+6)*3+1),).start()  print("成功")

本來想實現多執行緒的,奈何按照網上說的都無效,還是單執行緒下載。知道怎麼實現的還望不吝賜教。

git:https://github.com/dashenxian/ImageSpider

剛開始python學習。