Python超簡單的爬取網站中圖片


1、首先導入相關庫

import requests
import bs4
import threading #用於多線程爬蟲,爬取速度快,可以完成多頁爬取
import os

2、使用bs4獲取html中的內容

所爬取的網站:http://www.umei.cc/bizhitupian/diannaobizhi/1.htm    這只是第一頁中的圖片當然可以批量爬取里面所有的圖片

bs = bs4.BeautifulSoup(requests.get(r"http://www.umei.cc/bizhitupian/diannaobizhi/1.htm").text)

到這一步我們就已經拿到了該頁面的HTML了,發現輸出的HTML有點亂碼,這時我們可以改良一下我們的代碼

import bs4
import requests
import os
req = requests.get(r"http://www.umei.cc/bizhitupian/diannaobizhi/1.htm")
req.encoding="utf-8"
bs = bs4.BeautifulSoup(req.text)

這樣可以解決爬取出來的HTML亂碼的問題

3、拿到HTML后就進行匹配我們所需要的圖片標簽

obj = bs.find_all("a",{"class":{"TypeBigPics"}}) #a代表的是<a>標簽 class是<a>標簽中所對應的class  TypeBigPics為<a>標簽中class中對應的值,根據class中的值找出對應圖片的<a>標簽

這時就拿到了圖片所對應的所有的<a>標簽 find_all()取去出所有匹配的對象,find()則是取出一條

4、接着取出<a>標簽里面的所有img標簽

imgObj=[] #用於存儲img對象
for s in obj:
    imgObj.append(s.find("img")) #把取出的img對象存入imgObj數組中

5、接着獲取img標簽中src中的值

srcObj=[] #用於存儲圖片src對象for o in imgObj:
    srcObj.append(o.get("src"))

這時我們就得到了網頁上所有圖片的文件路徑,下一步就可以進行下載這些圖片了

6、下載圖片

for img in srcObj:
    with open("D:\\Images\\"+os.path.basename(img),'wb') as f:
        f.write(requests.get(img).content)
    print(os.path.basename(img)+"保存成功")

srcObj為上面所拿到的圖片地址,D:\\Images\\為本地保存目錄     注意:要用雙斜杠     os.path.basename(img)為圖片原文件名 也可替換成自己設置文件名   到這里簡單的爬蟲就已經結束了

7、全部代碼如下

import bs4
import requests
import os
req = requests.get(r"http://www.umei.cc/bizhitupian/diannaobizhi/1.htm")
req.encoding="utf-8"
bs = bs4.BeautifulSoup(req.text)
obj = bs.find_all("a",{"class":{"TypeBigPics"}})
objHtml=[]
objImg=[]
for s in obj:
    objHtml.append(s.find("img"))
for o in objHtml:
    objImg.append(o.get("src"))
for img in objImg:
    with open("D:\\pics22223\\"+os.path.basename(img),'wb') as f:
        f.write(requests.get(img).content)
    print(os.path.basename(img)+"保存成功");

8、使用多線程爬取此站所有的圖片

這里就直接上源碼了

import bs4
import requests
import os
import threading
def ojue(i): bs = bs4.BeautifulSoup(requests.get(r"http://www.umei.cc/bizhitupian/diannaobizhi/"+i+".htm").text) obj = bs.find_all("a",{"class":{"TypeBigPics"}}) objHtml=[] ImgObj=[] for f in obj: objHtml.append(f.get("href")) for z in objHtml: htmlText = bs4.BeautifulSoup(requests.get(z).text) Img = htmlText.find_all("img") for c in Img: ImgObj.append(c.get("src")) for img in ImgObj: with open("D:\\pics22223\\"+os.path.basename(img),'wb') as f: f.write(requests.get(img).content) print(os.path.basename(img)+"保存成功")

for i in range(627): #range()從0開始取到627 threading.Thread(target=ojue,args=(i+1,)).start() #target 參數是對應的函數名稱

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM