摘要:爬蟲敏感圖片的識別與過濾,了解一下需求我們需要識別出敏感作者的頭像把皮卡丘換成優(yōu)雅的。對比哈希不同圖片對比的方法,就是對比它們的位哈希中,有多少位不一樣漢明距離。
爬蟲敏感圖片的識別與過濾,了解一下? 需求
我們需要識別出敏感作者的avatar頭像,把”皮卡丘“換成”優(yōu)雅的python“。
敏感圖片樣本屬性:
爬蟲獲取的圖片屬性:
替換成:
檢查兩個圖片的相似度,一個簡單而快速的算法:感知哈希算法(Perceptual Hash),通過某種提取特征的方式為每個圖片計算一個指紋(哈希),這樣對比兩個圖片相似與否就變成了對比兩個指紋異同的問題。
實現(xiàn)Step1.縮小尺寸代碼(python3)將圖片縮小到8*8的大小,這樣做可以去除圖片的細節(jié),只保留結構和明暗等基本信息,同時摒棄不同尺寸和比例帶來的圖片差異。
Step2.灰度處理把縮小后的圖片轉化為64級灰度圖(每個像素只有64種顏色)。
Step3.計算平均值計算所有64個像素的灰度平均值。
Step4.計算哈希這里哈希的計算方法是:上面說的64個像素的灰度與平均值進行比較,大于或等于平均值記為1,小于記為0。
將每個像素的比較結果組合在一起成為一個64位的二進制整數(shù),這個整數(shù)就是此圖片的指紋。
Step5.對比哈希不同圖片對比的方法,就是對比它們的64位哈希中,有多少位不一樣(漢明距離)。一般來說如果不同的位數(shù)不超過5,就說明兩張圖片很相似,如果大于10,就很可能是兩張不同的圖片。
先來安裝pillow、requests:
pip3 install pillow requests
導入包:
from functools import reduce from PIL import Image import requests
實現(xiàn)圖片相似度算法:
# 計算pHash(只需要三行): def phash(img): img = img.resize((8, 8), Image.ANTIALIAS).convert("L") avg = reduce(lambda x, y: x + y, img.getdata()) / 64. return reduce( lambda x, y: x | (y[1] << y[0]), enumerate(map(lambda i: 0 if i < avg else 1, img.getdata())), 0 ) # 計算漢明距離: def hamming_distance(a, b): return bin(a^b).count("1") # 計算兩個圖片是否相似: def is_imgs_similar(img1,img2): return True if hamming_distance(phash(img1),phash(img2)) <= 5 else False
結合爬蟲:
# 打開本地存放一張敏感圖片; # 本次為了方便演示,從新浪圖床拉下一張1024X1024的圖片,保存命名為sensitive.jpg sensitive_url="https://ws4.sinaimg.cn/large/006tNbRwgy1fwttj7bi36j30sg0sgwm0.jpg" headers = { "User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5"} pic = requests.get(sensitive_url, headers=headers, timeout=300) if pic.status_code == 200: with open("sensitive.jpg", "wb") as f: f.write(pic.content) sensitive_pic = Image.open("sensitive.jpg") # 爬蟲獲取的圖片 target_url="https://ws3.sinaimg.cn/large/006tNbRwgy1fwttsauo6jj30h80han0y.jpg" pic = requests.get(target_url, headers=headers, timeout=300) if pic.status_code == 200: with open("target.jpg", "wb") as f: f.write(pic.content) target_pic = Image.open("target.jpg") # 判斷爬蟲獲取的圖片和敏感圖片是否相似 if is_imgs_similar(target_pic, sensitive_pic): print("2張圖片相似,替換敏感圖片為”優(yōu)雅的python“:{}".format("https://ws2.sinaimg.cn/large/006tNbRwgy1fw9yjmot3uj30y60y6q40.jpg")) else: print("不相似")
運行結果:
github源碼https://gist.github.com/luzih...
參考文章相似圖片檢測?三行代碼就夠了 - 掘金
此 Python2 腳本怎么修改為 Python3 運行 - V2EX
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44923.html
摘要:異步事件處理本項目涉及到多種異步事件的處理。即是的粉絲,是的關注對象。模式定義優(yōu)缺點推事件觸發(fā)后廣播給所有粉絲。具體來說,推模式就是事件觸發(fā)后產(chǎn)生,觸發(fā)事件的用戶下所有粉絲的實現(xiàn)中都存入該的。 項目源代碼已托管在 Github,歡迎 Star、Fork。 Q & A 問答社區(qū) QA 是一個基于 B/S 架構而設計開發(fā)的社區(qū)網(wǎng)站。 showImg(https://segmentfault...
摘要:時間永遠都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:圖意淫爬蟲與反爬蟲間的對決數(shù)據(jù)的重要性如今已然是大數(shù)據(jù)時代,數(shù)據(jù)正在驅動著業(yè)務開發(fā),驅動著運營手段,有了數(shù)據(jù)的支撐可以對用戶進行用戶畫像,個性化定制,數(shù)據(jù)可以指明方案設計和決策優(yōu)化方向,所以互聯(lián)網(wǎng)產(chǎn)品的開發(fā)都是離不開對數(shù)據(jù)的收集和分析,數(shù) showImg(https://segmentfault.com/img/remote/1460000013428119?w=539&h=337)...
摘要:月日下午,趙之健在七牛架構師實踐日第二十九期進行了多維度融合賦能視頻的實踐為題的實戰(zhàn)分享。本文主要分享了七牛人工智能實驗室在視頻方面的一些工作,分別有兩個關鍵詞一個是多維度融合,另外一個關鍵詞是視頻。 6 月 30 日下午,趙之健在七牛架構師實踐日第二十九期進行了《多維度融合賦能視頻 AI 的實踐》為題的實戰(zhàn)分享。? 作者簡介:?showImg(https://segmentfault...
閱讀 2857·2021-10-21 09:38
閱讀 2759·2021-10-11 10:59
閱讀 3041·2021-09-27 13:36
閱讀 1663·2021-08-23 09:43
閱讀 797·2019-08-29 14:14
閱讀 3037·2019-08-29 12:13
閱讀 3207·2019-08-29 12:13
閱讀 315·2019-08-26 12:24