CODEDRAGON ㆍDevelopment/Python
Page Rank - Spidering (페이지 랭크 - 스파이더링)
· 페이지 랭크 알고리즘을 구현합니다.
· 간단한 검색 엔진을 작성(Web Crawler)한 후 해당 결과를 페이지 랭크 알고리즘으로 웹 브라우저에 시각화하도록 하겠습니다.
· 페이지 랭크 알고리즘을 수행하여 가중치가 부여된 결과를 웹 브라우저로 시각화합니다. 이를 통해 어떤 페이지가 더 중요한지 알 수 있습니다.
· 수집한 데이터 색인을 시각화합니다.
The Anatomy of a Large-Scale Hypertextual Web Search Engine
http://infolab.stanford.edu/~backrub/google.html
전체 도식도
· spider.py로 스파이더링 과정을 거져 링크 정보를 수집하고
· sprank.py로 페이지랭크 알고리즘을 여러 번 수행합니다.
· spreset.py로 페이지랭크 알고리즘을 다시 시작할 수 있습니다.
· spjson.py을 통해 수집된 데이터를 자바스크립트 파일로 저장하고 이 파일을 force.html에서 읽어와서 d3.js로 시각화합니다.
File Info
구분 |
설명 |
spider.py |
· 웹 크롤링 코드 · 데이터 검색 및 저장 기능 · spider.py를 실행해서 검색되지 않은 페이지들을 찾아 데이터베이스에 저장합니다. · 다시 무작위로 검색되지 않은 페이지를 요청합니다.
|
sprank.py |
· 페이지 랭크 알고리즘 구현 · 많은 페이지링크 계산을 반복 실행합니다. · sprank.py를 통해 어떤 페이지가 어떤 페이지와 연결되어 있는지 찾아냅니다. 그리고 해당 중요도 숫자값를 읽고 업데이트 합니다. 모든 페이지는 처음에 중요도 값으로 1을 가지게 됩니다.
|
spreset.py |
· 모든 페이지의 중요도 값을 1로 설정합니다. · 모든 페이지 순위를 재설정하는 기능 |
spdump.py |
· 데이터베이스에서 데이터를 읽어 새로운 페이지 순위와 옛날 페이지 순위, 그리고 그 밖의 다른 것들을 나타냅니다. |
spjson.py |
· 데이터베이스를 모두 읽어서 페이지 순위대로 정렬해서 순위가 적혀 있는 자바스크립트 파일을 생성합니다. |
pagerank.js |
· 전처리한 데이터 스크립트 파일 · spjson.py 수행 후 만들어지는 자바스크립트 파일입니다. · 이 파일은 시각화과정에 사용되어 집니다. |
force.js |
· 클릭시 이벤트 처리를 위한 자바스크립트 |
d3.v2.js |
· 시각화 라이브러리 |
force.css |
· 스타일 시트 파일 |
force.html |
· force.js 파일을 읽어 페이지 순위를 나타내도록 시각화합니다. |
테이블 정보
database file |
설명 |
geodata.db |
데이터베이스 파일 |
table name |
Pages |
수집한 데이터 |
컴럼명 |
데이터타입 |
설명 |
id |
INTEGER |
PRIMARY KEY |
url |
TEXT |
UNIQUE |
html |
TEXT |
- |
error |
INTEGER |
에러 여부 |
old_rank |
REAL |
옛날 순위 |
new_rank |
REAL |
새로운 순위 |
table name |
Links |
· 연결 테이블 · 페이지간 관계를 나타내는 테이블 |
컴럼명 |
데이터타입 |
설명 |
from_id |
INTEGER |
Pages테이블에 링크들을 추가시킬 때 연결을 시작한 페이지를 알려주는 역할을 합니다. |
to_id |
INTEGER |
- |
table name |
Webs |
참조할 페이지 |
컴럼명 |
데이터타입 |
설명 |
url |
TEXT |
UNIQUE |
Step by Step
· Step 1: spider.py
· Step 2: sprank.py
· Step 3: spreset.py
· Step 4: spdump.py
· Step 5: spjson.py
· Step 6: 시각화
Step 1: spider.py
Step 2: sprank.py
Step 3: spreset.py
Step 4: spdump.py
Step 5: spjson.py
Step 6: 시각화
'Development > Python' 카테고리의 다른 글
IronPython (0) | 2018.06.21 |
---|---|
전치 연산(Transpose Computation) (0) | 2018.06.20 |
install scikit-learn (0) | 2018.06.17 |
numpy 배열을 생성하는 방법 - 파이썬 리스트를 사용하는 방법, numpy에서 제공하는 함수를 사용하는 방법 (0) | 2018.06.16 |
socket.socket() (0) | 2018.06.15 |