最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲實(shí)現(xiàn)百度圖片自動(dòng)下載

 更新時(shí)間:2018年02月04日 08:19:08   作者:返回主頁 nnngu  
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)百度圖片自動(dòng)下載的方法以及相關(guān)代碼分析,對(duì)此有興趣的朋友參考下。

制作爬蟲的步驟

制作一個(gè)爬蟲一般分以下幾個(gè)步驟:

分析需求分析網(wǎng)頁源代碼,配合開發(fā)者工具編寫正則表達(dá)式或者XPath表達(dá)式正式編寫 python 爬蟲代碼 效果預(yù)覽

運(yùn)行效果如下:

存放圖片的文件夾:

需求分析

我們的爬蟲至少要實(shí)現(xiàn)兩個(gè)功能:一是搜索圖片,二是自動(dòng)下載。

搜索圖片:最容易想到的是爬百度圖片的結(jié)果,我們就上百度圖片看看:

隨便搜索幾個(gè)關(guān)鍵字,可以看到已經(jīng)搜索出來很多張圖片:

分析網(wǎng)頁

我們點(diǎn)擊右鍵,查看源代碼:

打開源代碼之后,發(fā)現(xiàn)一堆源代碼比較難找出我們想要的資源。

這個(gè)時(shí)候,就要用開發(fā)者工具!我們回到上一頁面,調(diào)出開發(fā)者工具,我們需要用的是左上角那個(gè)東西:(鼠標(biāo)跟隨)。

然后選擇你想看源代碼的地方,就可以發(fā)現(xiàn),下面的代碼區(qū)自動(dòng)定位到了相應(yīng)的位置。如下圖:

我們復(fù)制這個(gè)地址,然后到剛才的一堆源代碼里搜索一下,發(fā)現(xiàn)了它的位置,但是這里我們又疑惑了,這個(gè)圖片有這么多地址,到底用哪個(gè)呢?我們可以看到有thumbURL,middleURL,hoverURL,objURL

通過分析可以知道,前面兩個(gè)是縮小的版本,hoverURL 是鼠標(biāo)移動(dòng)過后顯示的版本,objURL 應(yīng)該是我們需要的,可以分別打開這幾個(gè)網(wǎng)址看看,發(fā)現(xiàn) objURL 的那個(gè)最大最清晰。

找到了圖片地址,接下來我們分析源代碼??纯词遣皇撬械?objURL 都是圖片。

發(fā)現(xiàn)都是以.jpg格式結(jié)尾的圖片。

編寫正則表達(dá)式

pic_url = re.findall('"objURL":"(.*?)",',html,re.S)

編寫爬蟲代碼

這里我們用了2個(gè)包,一個(gè)是正則,一個(gè)是 requests 包

#-*- coding:utf-8 -*-
import re
import requests

復(fù)制百度圖片搜索的鏈接,傳入 requests ,然后把正則表達(dá)式寫好

url = 'https://image.baidu.com/search/index?tn=baiduimage&ie=utf-8&word=%E6%A0%97%E5%B1%B1%E6%9C%AA%E6%9D%A5%E5%A4%B4%E5%83%8F&ct=201326592&ic=0&lm=-1&width=&height=&v=index' html = requests.get(url).text pic_url = re.findall('"objURL":"(.*?)",',html,re.S)

因?yàn)橛泻芏鄰垐D片,所以要循環(huán),我們打印出結(jié)果來看看,然后用 requests 獲取網(wǎng)址,由于有些圖片可能存在網(wǎng)址打不開的情況,所以加了10秒超時(shí)控制。

pic_url = re.findall('"objURL":"(.*?)",',html,re.S) i = 1 for each in pic_url:   
print each   
try:     
pic= requests.get(each, timeout=10)   
except requests.exceptions.ConnectionError:     print('【錯(cuò)誤】當(dāng)前圖片無法下載')     
continue

接著就是把圖片保存下來,我們事先建立好一個(gè) images 目錄,把圖片都放進(jìn)去,命名的時(shí)候,以數(shù)字命名。

dir = '../images/' + keyword + '_' + str(i) + '.jpg'
    fp = open(dir, 'wb')
    fp.write(pic.content)
    fp.close()
    i += 1

完整的代碼

# -*- coding:utf-8 -*-
import re
import requests


def dowmloadPic(html, keyword):
  pic_url = re.findall('"objURL":"(.*?)",', html, re.S)
  i = 1
  print('找到關(guān)鍵詞:' + keyword + '的圖片,現(xiàn)在開始下載圖片...')
  for each in pic_url:
    print('正在下載第' + str(i) + '張圖片,圖片地址:' + str(each))
    try:
      pic = requests.get(each, timeout=10)
    except requests.exceptions.ConnectionError:
      print('【錯(cuò)誤】當(dāng)前圖片無法下載')
      continue

    dir = '../images/' + keyword + '_' + str(i) + '.jpg'
    fp = open(dir, 'wb')
    fp.write(pic.content)
    fp.close()
    i += 1


if __name__ == '__main__':
  word = input("Input key word: ")
  url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + '&ct=201326592&v=flip'
  result = requests.get(url)
  dowmloadPic(result.text, word)

我們看到有的圖片沒顯示出來,打開網(wǎng)址看,發(fā)現(xiàn)確實(shí)沒了。

因?yàn)榘俣扔行﹫D片它緩存到百度的服務(wù)器上,所以我們?cè)诎俣壬线€能看見它,但它的實(shí)際鏈接已經(jīng)失效了。

總結(jié)

enjoy 我們的第一個(gè)圖片下載爬蟲吧!當(dāng)然它不僅能下載百度的圖片,依葫蘆畫瓢,你現(xiàn)在應(yīng)該能做很多事情了,比如爬取頭像,爬淘寶展示圖等等。

完整代碼已經(jīng)放到Githut上 https://github.com/nnngu/BaiduImageDownload

相關(guān)文章

  • python+opencv3生成一個(gè)自定義純色圖教程

    python+opencv3生成一個(gè)自定義純色圖教程

    今天小編就為大家分享一篇python+opencv3生成一個(gè)自定義純色圖教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python 圖片去噪的方法示例

    python 圖片去噪的方法示例

    這篇文章主要介紹了python 圖片去噪的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python新手教程之while循環(huán)20例

    Python新手教程之while循環(huán)20例

    循環(huán)的作用就是讓指定的代碼重復(fù)的執(zhí)行,while循環(huán)最常用的應(yīng)用場(chǎng)景就是讓執(zhí)行的代碼按照指定的次數(shù)重復(fù)執(zhí)行,這篇文章主要給大家介紹了關(guān)于Python新手教程之while循環(huán)20例的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • 使用python編寫簡(jiǎn)單的小程序編譯成exe跑在win10上

    使用python編寫簡(jiǎn)單的小程序編譯成exe跑在win10上

    這篇文章主要介紹了使用python編寫簡(jiǎn)單的小程序編譯成exe跑在win10上的相關(guān)資料,需要的朋友可以參考下
    2018-01-01
  • Python動(dòng)態(tài)參數(shù)/命名空間/函數(shù)嵌套/global和nonlocal

    Python動(dòng)態(tài)參數(shù)/命名空間/函數(shù)嵌套/global和nonlocal

    這篇文章主要介紹了Python動(dòng)態(tài)參數(shù)/命名空間/函數(shù)嵌套/global和nonlocal,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • linux環(huán)境下Django的安裝配置詳解

    linux環(huán)境下Django的安裝配置詳解

    這篇文章主要介紹了linux環(huán)境下Django的安裝配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python3中編碼與解碼之Unicode與bytes的講解

    Python3中編碼與解碼之Unicode與bytes的講解

    今天小編就為大家分享一篇關(guān)于Python3中編碼與解碼之Unicode與bytes的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 淺談Python程序的錯(cuò)誤:變量未定義

    淺談Python程序的錯(cuò)誤:變量未定義

    這篇文章主要介紹了淺談Python程序的錯(cuò)誤:變量未定義,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python3 批量獲取對(duì)應(yīng)端口服務(wù)的實(shí)例

    python3 批量獲取對(duì)應(yīng)端口服務(wù)的實(shí)例

    今天小編就為大家分享一篇python3 批量獲取對(duì)應(yīng)端口服務(wù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python字符串下標(biāo)與切片及使用方法

    python字符串下標(biāo)與切片及使用方法

    這篇文章主要介紹了python字符串下標(biāo)與切片及使用方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

冀州市| 绵阳市| 五莲县| 宽甸| 阿合奇县| 蒙自县| 普陀区| 巴塘县| 秦安县| 芜湖市| 突泉县| 资讯 | 葫芦岛市| 佳木斯市| 文水县| 泰兴市| 高邑县| 万源市| 东方市| 专栏| 郑州市| 清苑县| 武功县| 乐山市| 汤原县| 阳新县| 特克斯县| 堆龙德庆县| 泾川县| 梁平县| 新闻| 双辽市| 波密县| 河间市| 永康市| 伊通| 德清县| 江阴市| 辽阳县| 溧水县| 金平|