這一篇主要寫使用 requests + BeautifulSoup + urllib 下載圖片保存到本地,下一篇寫下載整站詳情頁(yè)的圖片保存到本地(敬請(qǐng)期待)
爬取網(wǎng)絡(luò)上的數(shù)據(jù)其實(shí)很簡(jiǎn)單步清,只要掌握基本邏輯就好了要门。
- 找到網(wǎng)站;
- 分析所需數(shù)據(jù)的 HTML 節(jié)點(diǎn)廓啊;
- 把數(shù)據(jù)下載到本地或者存儲(chǔ)到數(shù)據(jù)庫(kù)
那好欢搜,廢話不多說(shuō),開(kāi)始吧谴轮!
準(zhǔn)備工作
- 開(kāi)發(fā)環(huán)境:Windows炒瘟,Pycharm,Request书聚,BeautifulSoup唧领,urllib
- 需要一定的 Python 爬蟲(chóng)、HTML 基礎(chǔ)
開(kāi)始動(dòng)身
明確目標(biāo)
本次要爬取的網(wǎng)站是 帥啊 網(wǎng) (點(diǎn)開(kāi)看一下雌续,有驚喜哦~[壞笑].png)
我們需要把網(wǎng)站第一頁(yè)所有 item 的圖片下載到本地-
制作爬蟲(chóng)
- 由于獲取下來(lái)的 html 編碼格式不對(duì)醉箕,所以要指定編碼格式為 utf-8
- 獲取頁(yè)面中每個(gè) item 的圖片標(biāo)簽
- 循環(huán)獲取標(biāo)簽的圖片鏈接(src)和圖片名(alt)
- 下載圖片到本地
from bs4 import BeautifulSoup
import requests
import os
import urllib.request
import time
headers = {
"Cookie": "UM_distinctid=16685e0279d3e0-06f34603dfa898-36664c08-1fa400-16685e0279e133; bdshare_firstime=1539844405694; gsScrollPos-1702681410=; CNZZDATA1254092508=1744643453-1539842703-%7C1539929860; _d_id=0ba0365838c8f6569af46a1e638d05",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
}
path = "D://images/"
def get_links(url):
wb_data = requests.get(url, headers=headers) # 加入 headers瓣履,避免被網(wǎng)站的反爬機(jī)制認(rèn)為是蜘蛛
wb_data.encoding = "utf-8"
soup = BeautifulSoup(wb_data.text, 'lxml')
links = soup.select(".item-img img")
if not os.path.exists(path): # 判斷該文件夾是否存在哈肖,不存在則創(chuàng)建
os.mkdir(path)
for link in links:
time.sleep(1) # 暫停一秒窿侈,避免訪問(wèn)過(guò)快被反爬機(jī)制認(rèn)為是蜘蛛
img = link.get("src")
img_name = link.get("alt")
urllib.request.urlretrieve(img, path + img_name + ".jpg")
print("-------- downloading ---------")
print("------ download done -------")
if __name__ == "__main__":
get_links("http://www.shuaia.net/index.html")
-
開(kāi)始爬取