前面寫了一個爬蟲程序,爬取了一個固定網(wǎng)站里面的所需要的圖片,在這個基礎(chǔ)上印荔,改了一些代碼低葫,改成通用的程序,只需要把你所要爬取的鏈接放在上面仍律,便可以爬取所需鏈接里面的圖片(通用)嘿悬,今天Python第四個項目:爬取簡書任意一篇文章所有圖片(通用)。
首先拿自己的一片游記做一下測試:江城武漢水泉,一座離開后會懷念的城市:http://www.reibang.com/p/8a11293ab640
代碼如下:
# _*_coding:utf-8_*_
from urllib.parse import urljoin
import requests
import re
import os
class GetImage(object):
def __init__(self, url):
self.url = url
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
}
self.dir_path = os.path.dirname(os.path.abspath(__file__))
self.path = self.dir_path + '/imgs'
isExists = os.path.exists(self.dir_path + '/imgs')
# 創(chuàng)建目錄
if not isExists:
os.makedirs(self.path)
def download(self, url):
try:
res = requests.get(url, headers=self.headers)
return res
except Exception as E:
print(url + '下載失敗,原因:' + E)
def parse(self, res):
content = res.content.decode()
# print(content)
img_list = re.findall(r'<img.*?src="(.*?)"', content, re.S)
img_list = [urljoin(self.url, url) for url in img_list]
return img_list
def save(self, res_img, file_name):
if (file_name.endswith('jpg')) or (file_name.endswith('png')):
file_name = file_name
else:
file_name = file_name + '.jpg'
if res_img:
with open(file_name, 'wb') as f:
f.write(res_img.content)
print(url + '下載成功')
def run(self):
# 下載
res = self.download(self.url)
# 解析
url_list = self.parse(res)
# 下載圖片
for url in url_list:
res_img = self.download(url)
name = url.strip().split('/').pop()
file_name = self.path + '/' + name
# 保存
self.save(res_img, file_name)
if __name__ == '__main__':
url_list = ['http://www.reibang.com/p/8a11293ab640']
for url in url_list:
text = GetImage(url)
text.run()
運行之后得到一個自動生成的imgs文件夾
打開 文件夾可以看到善涨,鏈接里面所有的圖片已經(jīng)抓取下來了。
原文作者:祈澈姑娘 技術(shù)博客:http://www.reibang.com/u/05f416aefbe1
90后前端妹子草则,愛編程钢拧,愛運營,文藝與代碼齊飛炕横,魅力與智慧共存的程序媛一枚源内,歡迎關(guān)注【編程微刊】公眾號,回復(fù)【領(lǐng)取資源】,500G編程學(xué)習(xí)資源干貨免費送份殿。