• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    해결됨

섹션2 실습1 코드 공유 문의..

24.04.07 15:15 작성 24.04.07 15:15 수정 조회수 66

0

안녕하세요 강사님..

 

실습 1번은 현재 저로서는 해석이 불가능하여

해석은 나중에 하기로 하고

일단 쳐보기만 열심히 쳐봤는데 역시나 안되네요..

코드 공유좀 부탁 드릴 수 있을까요..

 죄송합니다

from bs4 import BeautifulSoup
from urllib.request import *
from urllib.parse import *
from os import makedirs
import os.path, time, re

proc_files = {}

def enum_links(html, base):
    soup = BeautifulSoup(html, "html.parser")
    links = soup.select("link[rel='stylesheet']") # CSS
    links += soup.select("a[href]") # link
    result =[]

    for a in links :
        href = a.attrs['href']
        url = urljoin(base, href)
        result.append(url)
    return result

def download_file(url):
    o = urlparse(url)
    savepath = "./" + o.netloc + o.path
    if re.search(r"/$", savepath):
        savepath += "index.html"

    savedir = os.path.dirname(savepath)

    if os.path.exists(savepath): return savepath

    if not os.path.exists(savedir):
        print("mkdir=", savedir)
        makedirs(savedir)

    try:
        print("download=", url)
        urlretrieve(url, savepath) # url 다운 받고 파일 이름은 savepath로 저장 
        time.sleep(1)
        return savepath
    except:
        print("다운 실패", url)
        return None


def analyze_html(url, root_url):
    savepath = download_file(url)
    if savepath is None: return
    if savepath is proc_files: return
    proc_files[savepath] = True
    print('analyze_html', url)

    html =open(savepath, "r", encoding="utf-8").read()
    links = enum_links(html, url)
    for link_url in links:

        if link_url.find(root_url) != 0:
            if not re.search(r".css$", link_url): continue

        if re.search(r".(html|htm)$", link_url):
            analyze_html(link_url, root_url)
            continue

        download_file(link_url)


if __name__ == "__main__":
    url = "https://docs.python.org/3.5/library/"
    analyze_html(url, url)

답변 3

·

답변을 작성해보세요.

0

JOINC EDU님의 프로필

JOINC EDU

2024.04.10

메일 보내드렸습니다.

선수지식관련해서 제안해드린 내용 고민해보시고 추후 피드백 부탁드립니다.

감사합니다.

0

JOINC EDU님의 프로필

JOINC EDU

2024.04.09

안녕하세요 홍태경님,

 

사실 강의자료에 나와있는 코드를 그대로라도 직접 코딩해보면서 공부하길 원했던 내용인데, 메일 주소 하나 알려주시겠어요? 제가 출장 마치고 돌아오는 길에 피드백 드리겠습니다

홍태경님의 프로필

홍태경

질문자

2024.04.09

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.09

안녕하세요, 인프런 AI 인턴입니다.
제공해 주신 정보에 따르면 프로그래밍 관련 질문에 대한 답변을 제공하는 것이 목표입니다. 하지만 안타깝게도 제공된 정보에는 강의 자료 다운로드, 계정 관련 문의, 강의 수강 증빙 방법 및 서비스 오류 해결 방법에 관한 내용만 포함되어 있어, 질문하신 코드 공유 요청에 직접적으로 답변드리기 어렵습니다.

원하는 답변을 찾지 못하셨다면, 인프런 홈페이지의 FAQ 섹션을 참조하거나, 웹사이트 내 ‘문의하기’ 기능을 통해 직접적으로 강사나 운영진에게 연락을 취하는 것이 좋을 것 같습니다.

감사합니다.