본문 바로가기

S-DEV/다크웹

다크웹2

728x90

다크웹 미러링 사이트를 크롤링하여 연결된 URL 들을 파싱 후 DB로 저장

1. 연결된 URL 파싱하기 

import requests, sqlite3
from bs4 import BeautifulSoup

url = 'https://onions.danwin1210.de/'

response = requests.get(url)

# 상태 코드 확인 하기 
if response.status_code == 200:
    html = response.text
    soup = BeautifulSoup(html, 'html.parser')
    
    # a 태그안에 href를 사용하고있으면 파싱 
    for a in soup.findAll("a"):
        href = a["href"]
        # 만약에 ? 또는 https 또는 / 로 시작을 하면 넘김 
        if href.startswith("?") or href.startswith("https:") or href.startswith("/"):
            continue
        print(href)

else : 
    print(response.status_code)

 

2. DB 에 저장하기

import requests, sqlite3
from bs4 import BeautifulSoup

# DB 생성 (처음 실행 시 0byte 파일 생성, 이후 실행 시 기존에 있던 데이터베이스에 접근)
con = sqlite3.connect("tor_cr.db")
cursor = con.cursor()

# DB 생성
cursor.execute("CREATE TABLE IF NOT EXISTS url(onion TEXT);")

# DB 데이터 삽입
url = 'https://onions.danwin1210.de/'

response = requests.get(url)

if response.status_code == 200:
    html = response.text
    soup = BeautifulSoup(html, 'html.parser')
    for a in soup.findAll("a"):
        href = a["href"]
        if href.startswith("?") or href.startswith("https:") or href.startswith("/"):
            continue
        # 데이터 삽입
        cursor.execute('INSERT INTO url VALUES(?);', (href,))
    # 데이터를 삽입한 후에는 commit() 을 호출하여 변경 사항을 데이터베이스에 반영
    con.commit()
else:
    print(response.status_code)

'S-DEV > 다크웹' 카테고리의 다른 글

다크웹 3  (0) 2023.08.20
Tor IP 국적 지정  (0) 2023.08.20
다크웹  (0) 2023.08.17
데이터베이스  (0) 2023.08.13
Web Crowlling - 1  (0) 2023.08.07