国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python爬蟲實現百度圖片自動下載

Python爬蟲實現百度圖片自動下載

2021-01-11 23:59nnngu Python

這篇文章主要介紹了Python爬蟲實現百度圖片自動下載的方法以及相關代碼分析,對此有興趣的朋友參考下。

制作爬蟲的步驟

制作一個爬蟲一般分以下幾個步驟:

分析需求分析網頁源代碼,配合開發者工具編寫正則表達式或者XPath表達式正式編寫 python 爬蟲代碼 效果預覽

運行效果如下:

Python爬蟲實現百度圖片自動下載

存放圖片的文件夾:

Python爬蟲實現百度圖片自動下載

需求分析

我們的爬蟲至少要實現兩個功能:一是搜索圖片,二是自動下載。

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

Python爬蟲實現百度圖片自動下載

隨便搜索幾個關鍵字,可以看到已經搜索出來很多張圖片:

Python爬蟲實現百度圖片自動下載

分析網頁

我們點擊右鍵,查看源代碼:

Python爬蟲實現百度圖片自動下載

打開源代碼之后,發現一堆源代碼比較難找出我們想要的資源。

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

Python爬蟲實現百度圖片自動下載

然后選擇你想看源代碼的地方,就可以發現,下面的代碼區自動定位到了相應的位置。如下圖:

Python爬蟲實現百度圖片自動下載

Python爬蟲實現百度圖片自動下載

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

Python爬蟲實現百度圖片自動下載

通過分析可以知道,前面兩個是縮小的版本,hoverURL 是鼠標移動過后顯示的版本,objURL 應該是我們需要的,可以分別打開這幾個網址看看,發現 objURL 的那個最大最清晰。

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

Python爬蟲實現百度圖片自動下載

發現都是以.jpg格式結尾的圖片。

編寫正則表達式

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

編寫爬蟲代碼

這里我們用了2個包,一個是正則,一個是 requests 包

?
1
2
3
#-*- coding:utf-8 -*-
import re
import requests

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

Python爬蟲實現百度圖片自動下載

?
1
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)

 

因為有很多張圖片,所以要循環,我們打印出結果來看看,然后用 requests 獲取網址,由于有些圖片可能存在網址打不開的情況,所以加了10秒超時控制。

?
1
2
3
4
5
6
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('【錯誤】當前圖片無法下載')    
continue

 

接著就是把圖片保存下來,我們事先建立好一個 images 目錄,把圖片都放進去,命名的時候,以數字命名。

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

完整的代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# -*- coding:utf-8 -*-
import re
import requests
 
 
def dowmloadPic(html, keyword):
  pic_url = re.findall('"objURL":"(.*?)",', html, re.S)
  i = 1
  print('找到關鍵詞:' + keyword + '的圖片,現在開始下載圖片...')
  for each in pic_url:
    print('正在下載第' + str(i) + '張圖片,圖片地址:' + str(each))
    try:
      pic = requests.get(each, timeout=10)
    except requests.exceptions.ConnectionError:
      print('【錯誤】當前圖片無法下載')
      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)

Python爬蟲實現百度圖片自動下載

Python爬蟲實現百度圖片自動下載

我們看到有的圖片沒顯示出來,打開網址看,發現確實沒了。

Python爬蟲實現百度圖片自動下載

因為百度有些圖片它緩存到百度的服務器上,所以我們在百度上還能看見它,但它的實際鏈接已經失效了。

總結

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

完整代碼已經放到Githut上 https://github.com/nnngu/BaiduImageDownload

原文鏈接:https://www.cnblogs.com/nnngu/p/8410903.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕视频二区 | 17c一起操 | 成人免费观看在线视频 | 中文字幕精品一区二区精品绿巨人 | 日韩综合一区二区 | 午夜电影网址 | 国产麻豆乱码精品一区二区三区 | 天天天干天天天操 | 欧美国产在线观看 | 久久伦理电影网 | 性色av一区二区三区 | 免费观看www免费观看 | 中文字幕免费视频 | 狠狠操av | 羞羞视频在线免费 | 日韩有码在线观看 | 国产激情偷乱视频一区二区三区 | 国产精品无码久久久久 | 午夜精品久久久久久久久久久久 | 久久久精品视频国产 | 伦理午夜电影免费观看 | 中文字幕一区二区三区四区五区 | 亚洲日韩欧美一区二区在线 | 亚洲精品永久免费 | 国产精品久久久久久久久大全 | 国产九九九 | 成人精品久久久 | 亚洲国产综合在线 | 国产真实乱全部视频 | 国产在线a | 不卡一区 | 日本欧美在线观看 | 国产区视频 | 中文字幕在线观看日本 | 在线看黄色毛片 | 久久一区 | 久久免费99精品久久久久久 | 国产精品美女视频 | 免费一级片免费一级片 | 99亚洲国产精品 | 亚洲精品黄色 |