전체 스터디
전체 스터디
  • 전체보기
  • 질문
  • 숙제
내 스터디
  • 스터디에 참여해보세요!
다른 스터디
  • 멀티캠
    • 전체보기
    • 질문
    • 숙제
    • 잡담
  • 파이썬 기초 스터디
  • 네이버 정복 파이썬 크롤링
  • 페이스북 만드는 웹개발
  • 데이터사이언스 12시간 입문기
  • 파이썬 구글 Sheet 연동
  • 엑셀서당 - 훈장님의 기초 엑셀 트레이닝
  • 고전게임을 만들며 배우는 코딩의 기초
  • 내 업무를 거의 자동화하는 방법
  • SQL 입문 4시간
  • QR 코드 프로그래밍
  • 비전공자 개발지식 총정리
  • 초고속 퍼포먼스 마케터
  • 왓챠 함께 만들기
  • 퍼블리셔 초고속 입문기
  • 한국형 커뮤니티 만들기
  • airbnb 프론트엔드 카피 프로젝트
  • 워드프레스로 쿠팡 만들기
신재용 리더
네이버 정복 파이썬 크롤링
온라인
클래스 자세히 보기
신재용
11월 27일 00:09 · 멀티캠

3주차 챌린지2 답안입니다.

# requests 라이브러리를 불러온다.
import requests
# bs4에서 BeautifulSoup만 불러온다.
from bs4 import BeautifulSoup

# 안티크롤링을 회피하기 위해 헤더의 User-Agent 요소를 가짜로 만든다.
h = {"User-Agent": "Mozilla/5.0"}

# range(1, 4) : [1, 2, 3] 형태의 리스트를 반환
# i에 차례대로 1, 2, 3이 할당됨
for i in range(1, 4):
    # headers 인수를 h로 지정해 ycombinator 뉴스 페이지를 요청한다.
    raw = requests.get("https://news.ycombinator.com?p=" + str(i), headers=h)

    # 의미 없는 html 문자열을 파싱해 의미를 가지는 객체로 만든다.
    html = BeautifulSoup(raw.text, "html.parser")

    # class가 athing인 모든 요소를 선택해 list 형태로 반환한다.
    # list 형태이기 때문에 articles[0], articles[1]... 처럼 인덱싱 가능
    articles = html.select(".athing")

    # articles list에서 요소를 하나씩 꺼내서 article에 할당한다.
    for article in articles:
        # article 요소에서 class가 rank인 첫번째 요소를 선택한다.
        rank = article.select_one(".rank").text
        title = article.select_one(".storylink").text
        print(rank, title)


참여자 네이버 정복 파이썬 크롤링