Skip to content

Instantly share code, notes, and snippets.

@ByeongsuPark
Created November 2, 2018 08:01
Show Gist options
  • Save ByeongsuPark/9e1a6b2f03ef6d6935713674c54a3b2b to your computer and use it in GitHub Desktop.
Save ByeongsuPark/9e1a6b2f03ef6d6935713674c54a3b2b to your computer and use it in GitHub Desktop.
유사도 측정 알고리즘 테스트
from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
import numpy as np
headers = {"User-Agent":"Mozilla"}
html = urlopen(Request("https://toonkor.club", headers={'User-Agent': 'Mozilla'}))
blackSiteDB = list()
blackSiteTagDB = list()
similarity = list()
# 이미 블랙리스트 사이트로 확정된 사이트들
# @param None
def makeBlackSiteDB():
blackSiteDB.append("https://toonkor.club")
blackSiteDB.append("http://icn-02.com")
blackSiteDB.append("http://pd-tc.com")
blackSiteDB.append("http://spt-safe.com")
# 블랙 리스트 사이트의 태그 분석 후
# 해당 태그 정보를 또 다른 리스트에 저장
# @param site : 분석할 사이트 주소
def makeBlackSiteTagDB(site):
try:
html = urlopen(Request(site, headers={'User-Agent':'Mozilla'}))
except:
print("오류")
return
bsObj = BeautifulSoup(html, "html.parser")
TagList = bsObj.findAll(True)
temp = list()
for tag in TagList:
temp.append(tag)
blackSiteTagDB.append(temp)
# 논문의 LCS 유사도 측정 알고리즘을 이용하여
# 블랙 리스트 사이트 태그들과 파라미터로 넘겨준 사이트 태그와의 유사도 측정
# @param blackSiteTagDB : 블랙리스트 사이트 태그 db
# @param currentSiteTag : 라라미터로 넘겨준 사이트 태그 리스트
def calcSimilarity(currentSiteTag):
for blackSiteTag in blackSiteTagDB:
m = len(blackSiteTag)
n = len(currentSiteTag)
matrix = np.zeros((m+1, n+1))
for i in range(1,m+1):
for j in range(1,n+1):
if i == j:
matrix[i][j] = matrix[i-1][j-1] + 1
else:
matrix[i][j] = max(matrix[i-1][j], matrix[i][j-1])
print("=========")
print(matrix)
print("=========")
similarity_value = min(matrix[m][n] / m, matrix[m][n] / n )
similarity.append(similarity_value)
def main():
makeBlackSiteDB()
for site in blackSiteDB:
print("======블랙리스트db 구축 시작======")
makeBlackSiteTagDB(site)
print("======블랙리스트db 구축 완료======")
# 비교 대상 사이트 가져오기
print("======비교대상 사이트 파싱 시작=====")
html = urlopen(Request("http://lala-159.com/login.asp?spo", headers={"User-Agent":"Mozilla"}))
bsObj = BeautifulSoup(html, "html.parser")
TagList = bsObj.findAll(True)
print("======비교대상 사이트 파싱 완료=====")
print("======유사도 계산 시작=====")
calcSimilarity(TagList)
print("======유사도 출력=====")
print("최대 유사도를 가진 사이트: ", blackSiteDB[similarity.index(max(similarity))])
print("최대 유사도 값: ", max(similarity))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment