본문 바로가기
Developer/Python

[Python] 웹 스크랩핑하기

by Doony 2019. 5. 24.

이번 포스팅에서는 파이썬을 이용해 웹사이트를 스크랩핑하는 방법을 포스팅해보고자 합니다.
웹 스크래핑이란, 쉽게 얘기해서 인터넷에 있는 정보를 긁어오는 것을 말합니다. 예를들어 네이버 영화 순위나, 뉴스 등의 정보를 실시간으로 받아올 수 있습니다.
아주 기초적인 수준에서, 리디북스의 베스트셀러 리스트를 뽑아보는 예제를 시작해보겠습니다.

순서는 다음과 같습니다.

  • RIDIBOOKS 베스트셀러 URL 접속 (GET)
  • 베스트셀러의 항목별 이름에 붙은 cssSelecter로 필터링
  • 리스트 출력

하나씩 봐보도록 하겠습니다.

  1. RIDIBOOKS URL 접속
    1
    2
    3
    4
    import requests
    url = 'https://ridibooks.com/bestsellers/general'
    res = requests.get(url)
    print(res)
    cs

이에 대한 리스폰스는 다음과 같습니다.
<Response [200]>
200이면 정상적으로 잘 얻어왔다는 뜻입니다. 400, 404, 500 등 여러가지 코드가 있는데 이부분은 생략하고 넘어가겠습니다.

  • cssSelecter로
    페이지에서 읽고자 하는 부분의 css스타일의 아이디, 또는 클래스명이 필요합니다. 크롬의 개발자도구를 이용해 리디북스 베스트셀러의 값을 읽어보면 다음과 같습니다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    !pip install cssselect
    import lxml.html
     
    root = lxml.html.fromstring(res.text)
    titles = root.cssselect('span.title_text'#위에서 찾은 css
     
    titleList = []
    for title in titles:
        titleList.append(title.text_content().strip())
    cs

이제 titleList에 베스트셀러로 뜬 30개 책의 제목이 들어가 있는 것을 확인하실 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
['밀양 사람 김원봉이오',
 '팩트풀니스',
 '해리 포터 시리즈 1~7권 세트(한국어판)',
 '나의 월급 독립 프로젝트',
 '시작의 기술',
 '단 한 권을 읽어도 제대로 남는 메모 독서법',
 '철학은 어떻게 삶의 무기가 되는가',
 '제10회 젊은작가상 수상작품집 (2019)',
 '아주 작은 습관의 힘',
 '배드 블러드',
 '인류의 미래',
 '라플라스의 마녀',
 '돌이킬 수 없는 약속',
 '포노 사피엔스',
 '여자 둘이 살고 있습니다',
 '월스트리트 퀀트투자의 법칙',
 '메모혁신 Notion(노션) 활용 가이드',
 '살해하는 운명 카드',
 '죽음 세트',
 '나미야 잡화점의 기적',
 '딸에 대하여',
 '결단',
 '2019 서울성모병원 취업 가이드북',
 '걸어서 환장 속으로',
 '백 살까지 유쾌하게 나이 드는 법',
 '다시 부동산을 생각한다',
 '만화로 배우는 재무회계',
 '12가지 인생의 법칙',
 '별의 계승자',
 '일 잘하는 사람은 단순하게 합니다',
 '50대 사건으로 보는 돈의 역사']
cs

댓글