Created
November 2, 2018 08:01
-
-
Save ByeongsuPark/9e1a6b2f03ef6d6935713674c54a3b2b to your computer and use it in GitHub Desktop.
유사도 측정 알고리즘 테스트
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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