• <center id="sm46c"></center>
  • <dfn id="sm46c"></dfn>
  • <strike id="sm46c"></strike>
  • <cite id="sm46c"><source id="sm46c"></source></cite>
    • <strike id="sm46c"><source id="sm46c"></source></strike>
      <option id="sm46c"></option>
      国产精品天天看天天狠,女高中生强奷系列在线播放,久久无码免费的a毛片大全,国产日韩综合av在线,亚洲国产中文综合专区在,特殊重囗味sm在线观看无码,中文字幕一区二区三区四区在线,无码任你躁久久久久久老妇蜜桃

      PYTHON爬蟲——必應圖片關鍵詞爬取

      2018-8-31    seo達人

      如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

      圖片三個網站的圖片搜索結果進行爬取和下載。 
      首先通過爬蟲過程中遇到的問題,總結如下: 
      1、一次頁面加載的圖片數量各個網站是不定的,每翻一頁就會刷新一次,對于數據量大的爬蟲幾乎都需要用到翻頁功能,有如下兩種方式: 
      1)通過網站上的網址進行刷新,例如必應圖片:

      url = 'http://cn.bing.com/images/async?q={0}&first={1}&count=35&relp=35&lostate=r
      &mmasync=1&dgState=x*175_y*848_h*199_c*1_i*106_r*0'
          
      • 1
      • 2

      2)通過selenium來實現模擬鼠標操作來進行翻頁,這一點會在Google圖片爬取的時候進行講解。 
      2、每個網站應用的圖片加載技術都不一樣,對于靜態加載的網站爬取圖片非常容易,因為每張圖片的url都直接顯示在網頁源碼中,找到每張圖片對應的url即可使用urlretrieve()進行下載。然而對于動態加載的網站就比較復雜,需要具體問題具體分析,例如google圖片每次就會加載35張圖片(只能得到35張圖片的url),當滾動一次后網頁并不刷新但是會再次加載一批圖片,與前面加載完成的都一起顯示在網頁源碼中。對于動態加載的網站我推薦使用selenium庫來爬取。

      對于爬取圖片的流程基本如下(對于可以通過網址實現翻頁或者無需翻頁的網站): 
      1. 找到你需要爬取圖片的網站。(以必應為例)

      這里寫圖片描述
      2. 使用google元素檢查(其他的沒用過不做介紹)來查看網頁源碼。

      這里寫圖片描述
      3. 使用左上角的元素檢查來找到對應圖片的代碼。

      這里寫圖片描述
      4. 通過觀察找到翻頁的規律(有些網站的動態加載是完全看不出來的,這種方法不推薦)

      這里寫圖片描述
      從圖中可以看到標簽div,class=’dgControl hover’中的data-nexturl的內容隨著我們滾動頁面翻頁first會一直改變,q=二進制碼即我們關鍵字的二進制表示形式。加上前綴之后由此我們才得到了我們要用的url。 
      5. 我們將網頁的源碼放進BeautifulSoup中,代碼如下:

      url = 'http://cn.bing.com/images/async?q={0}&first={1}&count=35&relp=35&lostate=r&mmasync=1&dgState=x*175_y*848_h*199_c*1_i*106_r*0' agent = {'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.165063 Safari/537.36 AppEngine-Google."}
      page1 = urllib.request.Request(url.format(InputData, i*35+1), headers=agent)
      page = urllib.request.urlopen(page1)
      soup = BeautifulSoup(page.read(), 'html.parser')
          
      • 1
      • 2
      • 3
      • 4
      • 5

      我們得到的soup是一個class ‘bs4.BeautifulSoup’對象,可以直接對其進行操作,具體內容自行查找。 
      首先選取我們需要的url所在的class,如下圖: 
      這里寫圖片描述
      波浪線是我們需要的url。 
      我們由下面的代碼得到我們需要的url:

      if not os.path.exists("./" + word):#創建文件夾 os.mkdir('./' + word) for StepOne in soup.select('.mimg'):
          link=StepOne.attrs['src']#將得到的<class 'bs4.element.Tag'>轉化為字典形式并取src對應的value。 count = len(os.listdir('./' + word)) + 1 SaveImage(link,word,count)#調用函數保存得到的圖片。
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      最后調用urlretrieve()函數下載我們得到的圖片url,代碼如下:

       try:
              time.sleep(0.2)
              urllib.request.urlretrieve(link,'./'+InputData+'/'+str(count)+'.jpg') except urllib.error.HTTPError as urllib_err:
              print(urllib_err) except Exception as err:
              time.sleep(1)
              print(err)
              print("產生未知錯誤,放棄保存") else:
              print("圖+1,已有" + str(count) + "張圖")
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

      這里需要強調是像前面的打開網址和現在的下載圖片都需要使用try except進行錯誤測試,否則出錯時程序很容易崩潰,大大浪費了數據采集的時間。 
      以上就是對單個頁面進行數據采集的流程,緊接著改變url中{1}進行翻頁操作繼續采集下一頁。 
      數據采集結果如下: 
      這里寫圖片描述

      有問題請留言。 

      藍藍設計www.li-bodun.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

      日歷

      鏈接

      個人資料

      藍藍設計的小編 http://www.li-bodun.cn

      存檔

      主站蜘蛛池模板: 在线日韩日本国产亚洲| 国产精品午夜福利片国产| 人妻熟女αⅴ一区二区三区| 亚洲国产日韩A在线亚洲| 国产精品毛片va一区二区三区 | 精品午夜国产福利在线观看| 欧美性猛交xxx嘿人猛交| 一卡二卡三卡视频| 亚洲午夜福利在线观看| 午夜成人1000部免费视频| 怡春院欧美一区二区三区免费| 久久综合九色综合97欧美| 婷婷四房播播| 精品国产一区二区三区2021| 亚洲中文字幕亚洲中文精| a级免费视频| 精品少妇无码av无码专区| 成年午夜精品久久精品| h无码精品3d动漫在线观看 | 久久国产亚洲AV无码专区 | 亚洲精品av中文字幕在线| 无码日韩做暖暖大全免费不卡| 欧美日韩视频无码一区二区三| 99在线精品国自产拍| 色一情一乱一乱一区99av| av亚洲在线一区二区| 在线无码va中文字幕无码| 日韩一区精品视频一区二区| 国产熟妇另类久久久久久| 亚洲国产清纯| a在线亚洲男人的天堂试看| 国产成人精品亚洲777人妖| 国产剧情无码视频在线观看| 国产无遮挡aaa片爽爽| 亚洲成a人在线播放www| 亚洲亚洲人成综合网络| 亚洲色精品aⅴ一区区三区| 极品av麻豆国产在线观看| 亚洲aⅴ天堂av天堂无码麻豆| 久久精品伊人波多野结衣| 日本亚洲欧洲无免费码在线|