ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Web-Crawling
    Python 2020. 6. 4. 18:16

    스크래핑과 크롤링

    스크래핑(Scraping)

    • 웹사이트에 있는 특정 정보를 추출하는 기술크롤링(Crawling)

    • 웹사이트를 정기적으로 돌며 정보를 추출하는 기술1.1 데이터 다운로드

    • 파이썬 네트워크 라이브러리 urllib

    • urllib를 이용한 다운로드

    urllib.request 사용

    • urllib.request.urlretrieve() : 파일 직접 다운로드

    %%html
    
    <!-- 에디터 폰트를 조정합니다. -->
    <style type='text/css'>
    .CodeMirror{
        font-size: 14px;
        font-family: Bitstream Vera Sans Mono;
    }
    </style>
    #import
    import urllib.request
    #다운받을 파일 경로
    url = 'https://t1.daumcdn.net/daumtop_chanel/op/20170315064553027.png'
    downfile = 'daum_logo.png'
    #다운로드
    urllib.request.urlretrieve(url, downfile)
    print('file download!!')
    file download!!

    기본 사용법

    • urllub.parse.urlencode()

    • urllib.request.urlopen() : urllib.request.Request 객체를 받아 HTTP 요청

    • response.getcode() : 응답코드 200 이면 OK, 404 면 File Not Found 등등

    • response.read() : html 을 읽어 옴

    # 라이브러리 import
    import urllib.request
    import urllib.parse
    # https://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC
    url = 'https://book.naver.com/search/search.nhn'
    # 파라메터
    values = {'sm':'sta_hty.book', 'sug':'','where':'nexearch','query':'파이썬'}
    params = urllib.parse.urlencode(values)
    url = url + '?' + params
    print(url)
    https://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC
    #download
    response = urllib.request.urlopen(url)
    status_code = response.getcode()
    print(status_code)
    data = response.read()
    text = data.decode('utf-8')
    #print(text)
    200

    header 값 추가

    • 크롬등의 브라우저에서 header 값 확인

    • F12 -> Network -> 주소선택 -> user-agent 값 확인

    네이버 책 PC 해더

    user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36

    네이버 책 모바일 해더

    user-agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Mobile Safari/537.36

    URL = "http://www.daum.net"
    URL = "http://www.naver.com"
    header_info = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Mobile Safari/537.36'} 
    request = urllib.request.Request(URL, headers=header_info) 
    
    response = urllib.request.urlopen(request)
    print(response.geturl()) # https://m.daum.net/?nil_top=mobile
    print(response.info()) # 응답해더 값
    https://m.naver.com/
    Server: NWS
    Date: Thu, 04 Jun 2020 09:10:33 GMT
    Content-Type: text/html; charset=UTF-8
    Transfer-Encoding: chunked
    Connection: close
    Strict-Transport-Security: max-age=63072000
    Vary: Cookie,Accept-Encoding,User-Agent
    Set-Cookie: MM_NEW=1; Path=/; Domain=.naver.com; Expires=Fri, 04 Jun 2021 09:10:33 GMT
    Cache-Control: no-cache, no-store, must-revalidate
    Pragma: no-cache
    P3P: CP="CAO DSP CURa ADMa TAIa PSAa OUR LAW STP PHY ONL UNI PUR FIN COM NAV INT DEM STA PRE"
    X-XSS-Protection: 1; mode=block
    X-Frame-Options: DENY
    X-Protocol: https
    Referrer-Policy: unsafe-url

    Request 모듈

    • urllib 보다 유용하며 Rest API를 지원

    • 매개변수는 dictionary로 구성 하며 인코딩(URL 인코딩)이 필요없음

    • https://2.python-requests.org/en/master/

    • 설치(Installation) : pip install requests

    기본 사용법

    • requests.get(URL) : URL HTTP 요청

    • response.status_code : 응답코드 200 이면 OK, 404 면 File Not Found 등등

    • response.text : 응답내용을 읽어 옴

    • get 요청 : requests.get() 에서 parmas 옵션 사용

    • post 요청 : requests.get() 에서 data 옵션 사용

    • header 값 추가 : requests.get() 에서 headers 옵션 사용

    # 라이브러리 import
    import requests
    # GET 요청 : params 사용
    url = 'https://book.naver.com/search/search.nhn'
    # 파라메터
    params = {'sm':'sta_hty.book', 'sug':'', 'where':'nexearch','query':'파이썬'}
    
    response = requests.get(url, params=params)
    status_code = response.status_code
    text = response.text
    
    #print(text)
    # POST 요청 : data 사용
    url = 'https://book.naver.com/search/search.nhn'
    # 파라메터
    params = {'sm':'sta_hty.book', 'sug':'', 'where':'nexearch','query':'파이썬'}
    
    response = requests.get(url, data=params)
    status_code = response.status_code
    text = response.text
    
    #print(text)

    Header 값 추가하기

    # header 추가  : headers 사용
    url = 'https://book.naver.com/search/search.nhn'
    # 파라메터
    params = {'sm':'sta_hty.book', 'sug':'', 'where':'nexearch','query':'파이썬'}
    #header_info = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Mobile Safari/537.36'} 
    header_info = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}
    response = requests.get(url, headers=header_info, params=params)
    
    #print(dir(response))
    
    status_code = response.status_code
    print(status_code)
    if status_code == 200:
        mtext = response.text
        uri = response.url
    print(uri)
    #print(mtext)
    #uri # 모바일 주소
    200
    https://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC

    BeautifulSoup

    BeautifulSoup 기본 사용법

    BeautifulSoup객체.태그명

    pip install beautifulsoup4
    Requirement already satisfied: beautifulsoup4 in d:\bigdata\python\anaconda\envs\collect\lib\site-packages (4.9.1)
    Requirement already satisfied: soupsieve>1.2 in d:\bigdata\python\anaconda\envs\collect\lib\site-packages (from beautifulsoup4) (2.0.1)
    Note: you may need to restart the kernel to use updated packages.
    # import
    from bs4 import BeautifulSoup
    # use soup
    soup = BeautifulSoup(mtext, 'html.parser')
    # soup
    #print(soup)
    print(type(soup))
    <class 'bs4.BeautifulSoup'>
    # 데이터 추출 1
    title = soup.title
    print(title) # 태그명
    print(title.string)
    print(title.text) # 데이터가 필요하므로 많이쓰임
    print(title.get_text())
    print(type(title.string))
    print(type(title.text))
    print(type(title.get_text()))
    <title>
    파이썬 검색결과, 책 검색 : 네이버 책</title>
    
    파이썬 검색결과, 책 검색 : 네이버 책
    
    파이썬 검색결과, 책 검색 : 네이버 책
    
    파이썬 검색결과, 책 검색 : 네이버 책
    <class 'bs4.element.NavigableString'>
    <class 'str'>
    <class 'str'>
    # 데이터 추출 2
    h3 = soup.h3 # Header3으로 되있는 데이터만 추출
    print(h3)
    print(h3.string)
    print(h3.text)
    print(type(h3))
    print(type(h3.string))
    print(type(h3.text))
    <h3 class="blind">전체 분야 메뉴</h3>
    전체 분야 메뉴
    전체 분야 메뉴
    <class 'bs4.element.Tag'>
    <class 'bs4.element.NavigableString'>
    <class 'str'>

    BeautifulSoup객체(태그명)

    • 1개 이상의 데이터를 list로 넘겨줌

    # 데이터 추출 1
    title = soup('title') # title 태그 가져오기
    print(title) # list로 데이터 가져옴
    print(title[0].string)
    [<title>
    파이썬 검색결과, 책 검색 : 네이버 책</title>]
    
    파이썬 검색결과, 책 검색 : 네이버 책
    # 데이터 추출 2
    h3 = soup('h3') # 여러개를 가져옴
    print(h3)
    print(h3[0].string)
    print(h3[1].text)
    [<h3 class="blind">전체 분야 메뉴</h3>, <h3 class="blind">푸터</h3>]
    전체 분야 메뉴
    푸터

    find() 로 요소 찾기

    하나만 검색 : find('태그명')

    find_h3 = soup.find('h3')
    print(find_h3)
    print(find_h3.string)
    print(find_h3.text)
    <h3 class="blind">전체 분야 메뉴</h3>
    전체 분야 메뉴
    전체 분야 메뉴

    모두 검색 : find_all('태그명')

    find_all_meta = soup.find_all('meta')
    for i in find_all_meta:
        print(i)
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
    <meta content="article" property="og:type"/>
    <meta content="네이버 책: '파이썬' 검색결과" property="og:title"/>
    <meta content="http://book.naver.com/search/search.nhn?sm=sta_hty.book&amp;sug=&amp;where=nexearch&amp;query=%ED%8C%8C%EC%9D%B4%EC%8D%AC" property="og:url"/>
    <meta content="https://ssl.pstatic.net/static/m/book/icons/book_og_270x270.png" property="og:image"/>
    <meta content="책으로 만나는 새로운 세상" property="og:description"/>
    <meta content="" property="og:article:thumbnailUrl"/>
    <meta content="네이버 책" property="og:article:author"/>
    <meta content="https://book.naver.com" property="og:article:author:url"/>

    숫자 제한해서 검색 : find_all('태그명', limit=숫자)

    find_all_meta3 = soup.find_all('meta', limit=3)
    for i in find_all_meta3:
        print(i)
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
    <meta content="article" property="og:type"/>

    클래스(class)로 검색

    • find_all(class_=' ')

    find_all_class = soup.find_all(class_='thumb_type thumb_type2')
    for i in find_all_class:
        print(i)
        print('*'*50)
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:1,i:98000001_000000000000000000E551D0" href="http://book.naver.com/bookdb/book_detail.nhn?bid=15028688" target="_blank">
    <img alt="혼자 공부하는 파이썬" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/150/286/15028688.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:2,i:98000001_000000000000000000E3AFC1" href="http://book.naver.com/bookdb/book_detail.nhn?bid=14921665" target="_blank">
    <img alt="파이썬" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/149/216/14921665.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:3,i:98000001_000000000000000000D78C53" href="http://book.naver.com/bookdb/book_detail.nhn?bid=14126163" target="_blank">
    <img alt="모두의 파이썬" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/141/261/14126163.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:4,i:98000001_000000000000000000E5B068" href="http://book.naver.com/bookdb/book_detail.nhn?bid=15052904" target="_blank">
    <img alt="Do it! 점프 투 파이썬" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/150/529/15052904.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:5,i:98000001_000000000000000000F7C6DE" href="http://book.naver.com/bookdb/book_detail.nhn?bid=16238302" target="_blank">
    <img alt="파이썬 머신러닝 완벽 가이드" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/162/383/16238302.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:6,i:98000001_000000000000000000F22F23" href="http://book.naver.com/bookdb/book_detail.nhn?bid=15871779" target="_blank">
    <img alt="파이썬 for Beginner" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/158/717/15871779.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:7,i:98000001_000000000000000000E3B48C" href="http://book.naver.com/bookdb/book_detail.nhn?bid=14922892" target="_blank">
    <img alt="머신 러닝 교과서 with 파이썬, 사이킷런, 텐서플로" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/149/228/14922892.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:8,i:98000001_000000000000000000F8FE48" href="http://book.naver.com/bookdb/book_detail.nhn?bid=16318024" target="_blank">
    <img alt="생활코딩! 파이썬" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/163/180/16318024.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:9,i:98000001_000000000000000000E224DB" href="http://book.naver.com/bookdb/book_detail.nhn?bid=14820571" target="_blank">
    <img alt="모두의 데이터 분석 with 파이썬" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/148/205/14820571.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:10,i:98000001_000000000000000000F7D295" href="http://book.naver.com/bookdb/book_detail.nhn?bid=16241301" target="_blank">
    <img alt="파이썬과 리액트를 활용한 주식 자동 거래 시스템 구축(프로그래밍&amp;프랙티스 시리즈 22)" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/162/413/16241301.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:11,i:98000001_000000000000000000F91660" href="http://book.naver.com/bookdb/book_detail.nhn?bid=16324192" target="_blank">
    <img alt="Do it! 첫 파이썬" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/163/241/16324192.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:12,i:98000001_000000000000000000DF233A" href="http://book.naver.com/bookdb/book_detail.nhn?bid=14623546" target="_blank">
    <img alt="파이썬으로 배우는 알고리즘 트레이딩" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/146/235/14623546.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:13,i:98000001_000000000000000000E3B1E3" href="http://book.naver.com/bookdb/book_detail.nhn?bid=14922211" target="_blank">
    <img alt="파이썬 라이브러리를 활용한 데이터 분석" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/149/222/14922211.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:14,i:98000001_000000000000000000F85BE8" href="http://book.naver.com/bookdb/book_detail.nhn?bid=16276456" target="_blank">
    <img alt="실무자를 위한 파이썬 100제" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/162/764/16276456.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:15,i:98000001_000000000000000000DF7833" href="http://book.naver.com/bookdb/book_detail.nhn?bid=14645299" target="_blank">
    <img alt="파이썬 라이브러리를 활용한 머신러닝" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/146/452/14645299.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:16,i:98000001_000000000000000000F7C54D" href="http://book.naver.com/bookdb/book_detail.nhn?bid=16237901" target="_blank">
    <img alt="이것이 데이터 분석이다 with 파이썬" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/162/379/16237901.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:17,i:98000001_000000000000000000F3F367" href="http://book.naver.com/bookdb/book_detail.nhn?bid=15987559" target="_blank">
    <img alt="데이터 분석 실무 with 파이썬" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/159/875/15987559.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:18,i:98000001_000000000000000000F92FD7" href="http://book.naver.com/bookdb/book_detail.nhn?bid=16330711" target="_blank">
    <img alt="파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자(개정판)(위키북스 데이터 사이언스 시리즈 55)" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/163/307/16330711.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:19,i:98000001_000000000000000000D7D21A" href="http://book.naver.com/bookdb/book_detail.nhn?bid=14144026" target="_blank">
    <img alt="파이썬 코딩 도장" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/141/440/14144026.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    <div class="thumb_type thumb_type2">
    <a class="N=a:bls.thumb,r:20,i:98000001_000000000000000000EEDEDF" href="http://book.naver.com/bookdb/book_detail.nhn?bid=15654623" target="_blank">
    <img alt="파이썬 웹프로그래밍 실전편" onerror="this.src='https://ssl.pstatic.net/static/book/image/noimg3.gif';" src="https://bookthumb-phinf.pstatic.net/cover/156/546/15654623.jpg?type=m1&amp;udate=Thu Jun 04 18:12:03 KST 2020"/><span class="mask"><span class="bg1"></span><span class="bg2"></span></span>
    </a>
    </div>
    **************************************************
    # 책 상세 주소 가져오기 + 리스트에 담기
    for i in find_all_class:
        print(i.a.attrs['href'])
    
    book_address = [i.a.attrs['href'] for i in find_all_class]
    #print(book_address)
    
    book_bid = [i.split('=')[1] for i in book_address]
    book_bid
    http://book.naver.com/bookdb/book_detail.nhn?bid=15028688
    http://book.naver.com/bookdb/book_detail.nhn?bid=14921665
    http://book.naver.com/bookdb/book_detail.nhn?bid=14126163
    http://book.naver.com/bookdb/book_detail.nhn?bid=15052904
    http://book.naver.com/bookdb/book_detail.nhn?bid=16238302
    http://book.naver.com/bookdb/book_detail.nhn?bid=15871779
    http://book.naver.com/bookdb/book_detail.nhn?bid=14922892
    http://book.naver.com/bookdb/book_detail.nhn?bid=16318024
    http://book.naver.com/bookdb/book_detail.nhn?bid=14820571
    http://book.naver.com/bookdb/book_detail.nhn?bid=16241301
    http://book.naver.com/bookdb/book_detail.nhn?bid=16324192
    http://book.naver.com/bookdb/book_detail.nhn?bid=14623546
    http://book.naver.com/bookdb/book_detail.nhn?bid=14922211
    http://book.naver.com/bookdb/book_detail.nhn?bid=16276456
    http://book.naver.com/bookdb/book_detail.nhn?bid=14645299
    http://book.naver.com/bookdb/book_detail.nhn?bid=16237901
    http://book.naver.com/bookdb/book_detail.nhn?bid=15987559
    http://book.naver.com/bookdb/book_detail.nhn?bid=16330711
    http://book.naver.com/bookdb/book_detail.nhn?bid=14144026
    http://book.naver.com/bookdb/book_detail.nhn?bid=15654623
    
    
    
    
    
    ['15028688',
     '14921665',
     '14126163',
     '15052904',
     '16238302',
     '15871779',
     '14922892',
     '16318024',
     '14820571',
     '16241301',
     '16324192',
     '14623546',
     '14922211',
     '16276456',
     '14645299',
     '16237901',
     '15987559',
     '16330711',
     '14144026',
     '15654623']
    # 책 상세 주소 가져오기 다른 방법
    for i in find_all_class:
        print(i.a['href'])
    http://book.naver.com/bookdb/book_detail.nhn?bid=15028688
    http://book.naver.com/bookdb/book_detail.nhn?bid=14921665
    http://book.naver.com/bookdb/book_detail.nhn?bid=14126163
    http://book.naver.com/bookdb/book_detail.nhn?bid=15052904
    http://book.naver.com/bookdb/book_detail.nhn?bid=16238302
    http://book.naver.com/bookdb/book_detail.nhn?bid=15871779
    http://book.naver.com/bookdb/book_detail.nhn?bid=14922892
    http://book.naver.com/bookdb/book_detail.nhn?bid=16318024
    http://book.naver.com/bookdb/book_detail.nhn?bid=14820571
    http://book.naver.com/bookdb/book_detail.nhn?bid=16241301
    http://book.naver.com/bookdb/book_detail.nhn?bid=16324192
    http://book.naver.com/bookdb/book_detail.nhn?bid=14623546
    http://book.naver.com/bookdb/book_detail.nhn?bid=14922211
    http://book.naver.com/bookdb/book_detail.nhn?bid=16276456
    http://book.naver.com/bookdb/book_detail.nhn?bid=14645299
    http://book.naver.com/bookdb/book_detail.nhn?bid=16237901
    http://book.naver.com/bookdb/book_detail.nhn?bid=15987559
    http://book.naver.com/bookdb/book_detail.nhn?bid=16330711
    http://book.naver.com/bookdb/book_detail.nhn?bid=14144026
    http://book.naver.com/bookdb/book_detail.nhn?bid=15654623
    # 책 bid : 책 제목 딕셔너리에 담기
    for i in find_all_class: # img alt="혼자 공부하는 파이썬"
        print(i.img.attrs['alt'])
        #print(i.img['alt'])
        #print()
    
    book_title = [i.img.attrs['alt'] for i in find_all_class]
    혼자 공부하는 파이썬
    파이썬
    모두의 파이썬
    Do it! 점프 투 파이썬
    파이썬 머신러닝 완벽 가이드
    파이썬 for Beginner
    머신 러닝 교과서 with 파이썬, 사이킷런, 텐서플로
    생활코딩! 파이썬
    모두의 데이터 분석 with 파이썬
    파이썬과 리액트를 활용한 주식 자동 거래 시스템 구축(프로그래밍&프랙티스 시리즈 22)
    Do it! 첫 파이썬
    파이썬으로 배우는 알고리즘 트레이딩
    파이썬 라이브러리를 활용한 데이터 분석
    실무자를 위한 파이썬 100제
    파이썬 라이브러리를 활용한 머신러닝
    이것이 데이터 분석이다 with 파이썬
    데이터 분석 실무 with 파이썬
    파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자(개정판)(위키북스 데이터 사이언스 시리즈 55)
    파이썬 코딩 도장
    파이썬 웹프로그래밍 실전편

    데이터 list, dict 만들기

    book_info_list = []
    book_info_dict = {}
    for i in find_all_class:
        title = i.img.attrs['alt']
        bid = i.a.attrs['href'].split("=")[1]
        book_info_list.append((bid,title ))
        book_info_dict[bid] = title
    
    book_info_list                 
    book_info_dict
    {'15028688': '혼자 공부하는 파이썬',
     '14921665': '파이썬',
     '14126163': '모두의 파이썬',
     '15052904': 'Do it! 점프 투 파이썬',
     '16238302': '파이썬 머신러닝 완벽 가이드',
     '15871779': '파이썬 for Beginner',
     '14922892': '머신 러닝 교과서 with 파이썬, 사이킷런, 텐서플로',
     '16318024': '생활코딩! 파이썬',
     '14820571': '모두의 데이터 분석 with 파이썬',
     '16241301': '파이썬과 리액트를 활용한 주식 자동 거래 시스템 구축(프로그래밍&프랙티스 시리즈 22)',
     '16324192': 'Do it! 첫 파이썬',
     '14623546': '파이썬으로 배우는 알고리즘 트레이딩',
     '14922211': '파이썬 라이브러리를 활용한 데이터 분석',
     '16276456': '실무자를 위한 파이썬 100제',
     '14645299': '파이썬 라이브러리를 활용한 머신러닝',
     '16237901': '이것이 데이터 분석이다 with 파이썬',
     '15987559': '데이터 분석 실무 with 파이썬',
     '16330711': '파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자(개정판)(위키북스 데이터 사이언스 시리즈 55)',
     '14144026': '파이썬 코딩 도장',
     '15654623': '파이썬 웹프로그래밍 실전편'}
    # 책 이름 리스트에 담기
    find_all = soup.find_all(class_='thumb_type thumb_type2')
    book_title = []
    for item in find_all:
        book_title.append(item.img['alt'])
    #book_title
    # bib번호 리스트에 담기
    hef = [i.a.attrs['href'] for i in find_all]
    book_id = [i.split('=')[1] for i in hef]
    book_id
    #하나로 묶는 경우
    # book_id = [i.a.attrs['href'].split('=')[1] for i in find_all]
    ['15028688',
     '14921665',
     '14126163',
     '15052904',
     '16238302',
     '15871779',
     '14922892',
     '16318024',
     '14820571',
     '16241301',
     '16324192',
     '14623546',
     '14922211',
     '16276456',
     '14645299',
     '16237901',
     '15987559',
     '16330711',
     '14144026',
     '15654623']

    아이디(id)로 검색

    find_id = soup.find(id='searchBiblioList')
    # for i in find_id:
    #     print(i)
    find_all_id = soup.find_all(id='searchBiblioList')
    # for i in find_all_id:
    #     print(i)

    속성으로 검색

    • find_all(attrs={'속성':'값'}) 사용

    # class 특정 값 가져오기
    find_all_attrs_class = soup.find_all(attrs={'class':'thumb_type thumb_type2'})
    # id 특정 값 가져오기
    find_all_attrs_id = soup.find_all(attrs={'id':'searchBiblioList'})
    find_all_attrs_type = soup.find_all(attrs={'type':'책소개'})
    print(find_all_attrs_type)
    [<dd id="searchDescrition_15028688" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    1:1 과외하듯 배우는 <strong>파이썬</strong> 프로그래밍 자습서(<strong>파이썬</strong> 최신 버전 반영)
    이 책은 독학으로 프로그래밍 언어를 처음 배우려는 입문자가, 혹은 <strong>파이썬</strong>을 배우려는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’, ‘어떻게’ 학습해야 할지조차 모르는 입문자의...</dd>, <dd id="searchDescrition_14921665" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    막막했던 <strong>파이썬</strong>, 이제 한 권으로 기초를 배우는
    <strong>파이썬</strong> 사용 설명서!전 세계적으로 유명한 구글(GOOGLE)이 자신의 많은 서비스를 <strong>파이썬</strong>으로 제공하고 있습니다. 이것은 구글의 뛰어난 서비스를 개인의 비즈니스에 쉽게 이용할 수 있다는 의미입니다.이러한 발전에 맞춰 <strong>파이썬</strong> 문법의 기초를...</dd>, <dd id="searchDescrition_14126163" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
    <strong>파이썬</strong> 분야 &amp; 어린이 코딩 교육 분야
    2년 연속 베스트셀러! 개정판 출간!
    
    즐겁게 시작하는 나의 첫 프로그래밍!
    프로그래밍을 한 번도 해본 적이 없어도 괜찮다. <strong>파이썬</strong>이 무엇인지 몰라도... 어느새 <strong>파이썬</strong> 프로그램으로 멋진 그림을 그리고, 계산을 하고, 간단한 게임을 만들고, 수학 문제를...</dd>, <dd id="searchDescrition_15052904" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
    <strong>파이썬</strong> 4년 연속 베스트셀러 1위! ★★★★
    《DO IT! 점프 투 <strong>파이썬</strong>》 전면 개정판 출시!
    문과생도 중고등학생도 직장인도 프로그래밍에 눈뜨게... 점프 투 <strong>파이썬</strong>》으로 출간되었던 이 책은 약 4년 동안의 피드백을 반영하여 초보자가 더 빠르게 입문하고, 더 깊이 있게 공부할 수 있도록...</dd>, <dd id="searchDescrition_16238302" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    자세한 이론 설명과 <strong>파이썬</strong> 실습을 통해 머신러닝을 완벽하게 배울 수 있습니다!《<strong>파이썬</strong> 머신러닝 완벽 가이드》는 이론 위주의 머신러닝 책에서 탈피해 다양한 실전 예제를 직접 구현해 보면서 머신러닝을 체득할 수 있도록 만들었습니다.캐글과 UCI 머신러닝 리포지토리에서 난이도가...</dd>, <dd id="searchDescrition_14922892" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
    <strong>파이썬</strong> 언어와 <strong>파이썬</strong> 기반의 머신 러닝 핵심 라이브러리(SCIPY, NUMPY, SCIKIT-LEARN, MATPLOTLIB, PANDAS)를 사용해 머신 러닝을, 텐서플로를 사용해 딥러닝을 실습하면서 머신 러닝과 딥러닝 핵심 알고리즘을 설명하고, 간단한 알고리즘은 처음부터 직접 구현해본다. 또한, 사이킷런의 기여자이자...</dd>, <dd id="searchDescrition_16318024" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    이 책은 생활코딩에서 제공하는 <strong>파이썬</strong> 강좌를 정리하여 다듬은 책입니다. 그리고 심도 있는 실습을 위해 생활코딩에는 없는 실습 챌린지를 포함합니다. 2장은 <strong>파이썬</strong> 언어의 문법과 기능을 다룹니다. <strong>파이썬</strong>을 처음 접하는 초심자의 눈높이에 적합하게 구성되어 있습니다. 빠르게 무엇인가를...</dd>, <dd id="searchDescrition_14820571" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    데이터 다운로드부터 정제, 문제 해결 방법 구상, <strong>파이썬</strong> 코드로 구현까지 차근차근 진행하면서, 초보자가 데이터 분석의 성공적인 첫걸음을... 최소한의 <strong>파이썬</strong> 문법만을 사용하여 설명하므로 프로그래밍 경험이 적은 사람도 충분히 따라 할 수 있다. 이제 데이터 분석 전문가가 아니어도...</dd>, <dd id="searchDescrition_16241301" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
    <strong>파이썬</strong>을 이용해 데이터를 수집, 저장, 가공, 분석하는 방법부터 리액트를 이용해 사용자의 화면까지 개발하는 방법까지 한 권에 담았다. 이... ★ 이 책에서 다루는 내용 ★
    ◎ 증권사(이베스트)에서 제공하는 API를 이용해 <strong>파이썬</strong>으로 거래 자동화 시스템을 개발한다.
    ◎ 외부로 기능을...</dd>, <dd id="searchDescrition_16324192" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    왕초보 맞춤 <strong>파이썬</strong> 입문서
    초등 고학년부터 필수인 코딩, 주인공 ‘엘리스 토끼’와 함께 게임하듯 배우세요. 176가지 그림과 45가지 코딩 문제를... 마지막 과제인 ‘점심 메뉴 추첨기’ 프로그램까지 만들면 ‘<strong>파이썬</strong> 이수증’도 드립니다. 제대로 설계된 코딩 교육 콘텐츠를 찾는 학생·학부모...</dd>, <dd id="searchDescrition_14623546" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    『<strong>파이썬</strong>으로 배우는 알고리즘 트레이딩』은 <strong>파이썬</strong>이라는 프로그래밍 언어를 이용한 알고리즘 트레이딩을 다룬다. 프로그래밍을 전혀 모르는 비전공자나 HTS(Home Trading System)로 주식 투자 정도만 할 수 있는 일반인도 빠르게 <strong>파이썬</strong>과 알고리즘 트레이딩을...</dd>, <dd id="searchDescrition_14922211" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    빅데이터 분석에 관한 가장 완벽한 교재!이 책은 NUMPY, PANDAS, MATPLOTLIB, IPYTHON, JUPYTER 등 다양한 <strong>파이썬</strong> 라이브러리를 사용해서 효과적으로 데이터를 분석하는 방법을 알려준다. PANDAS의 새로운 기능뿐만 아니라 메모리 사용량을 줄이고 성능을 개선하는 고급 사용법까지...</dd>, <dd id="searchDescrition_16276456" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    누구나 시작할 수 있다, <strong>파이썬</strong>!이 책은 <strong>파이썬</strong>이 필요해 공부를 시작했는데, 기초는 끝냈고 더 깊고 넓은 방향으로 배워보고 싶은 사람들을 대상으로 했다. <strong>파이썬</strong> 기초 문법을 익혔다면 이 책을 통해 다양한 라이브러리 활용까지 도전해볼 수 있을 것이다. 데이터를 수집하고...</dd>, <dd id="searchDescrition_16237901" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    실생활 예제로 쉽게, 단계별 분석에 따라 구조적으로 배우는 데이터 분석 입문서데이터를 다루는 데 언어나 라이브러리는 도구일 뿐입니다. 진짜 중요한 것은 문제해결 능력입니다. 이 책은 주어진 문제를 어떻게 단계적으로 접근하면 좋을지에 대해 독자 친화적으로 가이드를 주는 책입니다....</dd>, <dd id="searchDescrition_15987559" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    이 책은 <strong>파이썬</strong>을 처음 접하는 마케팅, 영업, 기획 실무 담당자들이 <strong>파이썬</strong>을 활용한 데이터 분석에 재미있게 빠져들 수 있도록 실제 업무에 활용할 수 있거나 흥미로운 예제로 구성돼 있습니다. 이 책을 마치고 나면 데이터를 기반으로 좋은 질문에 답할 수 있는 실력을 키울 수 있을 것입니다.</dd>, <dd id="searchDescrition_16330711" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    실제 주식 데이터를 이용해 <strong>파이썬</strong>으로 강화학습 주식투자 프로그램을 직접 구현해 봅니다!강화학습은 스스로 학습하는 머신러닝 기법으로 주식 데이터 학습에 잘 적용되는 기법입니다. 이 책은 <strong>파이썬</strong>을 이용한 강화학습 기반의 주식투자 시뮬레이션 프로그램 개발에 대해 설명합니다. 이를 위한...</dd>, <dd id="searchDescrition_14144026" line="3" type="책소개">
    <span class="txt_g1">소개 </span>
                    외우기만 해서는 <strong>파이썬</strong>도 어렵다!
    프로그래밍은 연습으로 배우는 것!
    문법을 외우기만 해서는 <strong>파이썬</strong>도 배우기 어렵다. 프로그래밍은 개념을... 최고의 학습은 반복이고, 스스로 생각하기다
    <strong>파이썬</strong> 문법을 학습한 다음에는 반드시 퀴즈를 풀어보게 했다. 퀴즈를 풀어본 다음에는 반드시...</dd>]

    태그의 텍스트(내용)만 검색

    • text 속성 사용

    find_all_attrs_type = soup.find_all(attrs={'type':'책소개'})
    for i in find_all_attrs_type:
        print(i.text)
        print("*"*80)
    소개 
                    1:1 과외하듯 배우는 파이썬 프로그래밍 자습서(파이썬 최신 버전 반영)
    이 책은 독학으로 프로그래밍 언어를 처음 배우려는 입문자가, 혹은 파이썬을 배우려는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’, ‘어떻게’ 학습해야 할지조차 모르는 입문자의...
    ********************************************************************************
    
    소개 
                    막막했던 파이썬, 이제 한 권으로 기초를 배우는
    파이썬 사용 설명서!전 세계적으로 유명한 구글(GOOGLE)이 자신의 많은 서비스를 파이썬으로 제공하고 있습니다. 이것은 구글의 뛰어난 서비스를 개인의 비즈니스에 쉽게 이용할 수 있다는 의미입니다.이러한 발전에 맞춰 파이썬 문법의 기초를...
    ********************************************************************************
    
    소개 
    파이썬 분야 & 어린이 코딩 교육 분야
    2년 연속 베스트셀러! 개정판 출간!
    
    즐겁게 시작하는 나의 첫 프로그래밍!
    프로그래밍을 한 번도 해본 적이 없어도 괜찮다. 파이썬이 무엇인지 몰라도... 어느새 파이썬 프로그램으로 멋진 그림을 그리고, 계산을 하고, 간단한 게임을 만들고, 수학 문제를...
    ********************************************************************************
    
    소개 
    파이썬 4년 연속 베스트셀러 1위! ★★★★
    《DO IT! 점프 투 파이썬》 전면 개정판 출시!
    문과생도 중고등학생도 직장인도 프로그래밍에 눈뜨게... 점프 투 파이썬》으로 출간되었던 이 책은 약 4년 동안의 피드백을 반영하여 초보자가 더 빠르게 입문하고, 더 깊이 있게 공부할 수 있도록...
    ********************************************************************************
    
    소개 
                    자세한 이론 설명과 파이썬 실습을 통해 머신러닝을 완벽하게 배울 수 있습니다!《파이썬 머신러닝 완벽 가이드》는 이론 위주의 머신러닝 책에서 탈피해 다양한 실전 예제를 직접 구현해 보면서 머신러닝을 체득할 수 있도록 만들었습니다.캐글과 UCI 머신러닝 리포지토리에서 난이도가...
    ********************************************************************************
    
    소개 
    파이썬 언어와 파이썬 기반의 머신 러닝 핵심 라이브러리(SCIPY, NUMPY, SCIKIT-LEARN, MATPLOTLIB, PANDAS)를 사용해 머신 러닝을, 텐서플로를 사용해 딥러닝을 실습하면서 머신 러닝과 딥러닝 핵심 알고리즘을 설명하고, 간단한 알고리즘은 처음부터 직접 구현해본다. 또한, 사이킷런의 기여자이자...
    ********************************************************************************
    
    소개 
                    이 책은 생활코딩에서 제공하는 파이썬 강좌를 정리하여 다듬은 책입니다. 그리고 심도 있는 실습을 위해 생활코딩에는 없는 실습 챌린지를 포함합니다. 2장은 파이썬 언어의 문법과 기능을 다룹니다. 파이썬을 처음 접하는 초심자의 눈높이에 적합하게 구성되어 있습니다. 빠르게 무엇인가를...
    ********************************************************************************
    
    소개 
                    데이터 다운로드부터 정제, 문제 해결 방법 구상, 파이썬 코드로 구현까지 차근차근 진행하면서, 초보자가 데이터 분석의 성공적인 첫걸음을... 최소한의 파이썬 문법만을 사용하여 설명하므로 프로그래밍 경험이 적은 사람도 충분히 따라 할 수 있다. 이제 데이터 분석 전문가가 아니어도...
    ********************************************************************************
    
    소개 
    파이썬을 이용해 데이터를 수집, 저장, 가공, 분석하는 방법부터 리액트를 이용해 사용자의 화면까지 개발하는 방법까지 한 권에 담았다. 이... ★ 이 책에서 다루는 내용 ★
    ◎ 증권사(이베스트)에서 제공하는 API를 이용해 파이썬으로 거래 자동화 시스템을 개발한다.
    ◎ 외부로 기능을...
    ********************************************************************************
    
    소개 
                    왕초보 맞춤 파이썬 입문서
    초등 고학년부터 필수인 코딩, 주인공 ‘엘리스 토끼’와 함께 게임하듯 배우세요. 176가지 그림과 45가지 코딩 문제를... 마지막 과제인 ‘점심 메뉴 추첨기’ 프로그램까지 만들면 ‘파이썬 이수증’도 드립니다. 제대로 설계된 코딩 교육 콘텐츠를 찾는 학생·학부모...
    ********************************************************************************
    
    소개 
                    『파이썬으로 배우는 알고리즘 트레이딩』은 파이썬이라는 프로그래밍 언어를 이용한 알고리즘 트레이딩을 다룬다. 프로그래밍을 전혀 모르는 비전공자나 HTS(Home Trading System)로 주식 투자 정도만 할 수 있는 일반인도 빠르게 파이썬과 알고리즘 트레이딩을...
    ********************************************************************************
    
    소개 
                    빅데이터 분석에 관한 가장 완벽한 교재!이 책은 NUMPY, PANDAS, MATPLOTLIB, IPYTHON, JUPYTER 등 다양한 파이썬 라이브러리를 사용해서 효과적으로 데이터를 분석하는 방법을 알려준다. PANDAS의 새로운 기능뿐만 아니라 메모리 사용량을 줄이고 성능을 개선하는 고급 사용법까지...
    ********************************************************************************
    
    소개 
                    누구나 시작할 수 있다, 파이썬!이 책은 파이썬이 필요해 공부를 시작했는데, 기초는 끝냈고 더 깊고 넓은 방향으로 배워보고 싶은 사람들을 대상으로 했다. 파이썬 기초 문법을 익혔다면 이 책을 통해 다양한 라이브러리 활용까지 도전해볼 수 있을 것이다. 데이터를 수집하고...
    ********************************************************************************
    
    소개 
                    실생활 예제로 쉽게, 단계별 분석에 따라 구조적으로 배우는 데이터 분석 입문서데이터를 다루는 데 언어나 라이브러리는 도구일 뿐입니다. 진짜 중요한 것은 문제해결 능력입니다. 이 책은 주어진 문제를 어떻게 단계적으로 접근하면 좋을지에 대해 독자 친화적으로 가이드를 주는 책입니다....
    ********************************************************************************
    
    소개 
                    이 책은 파이썬을 처음 접하는 마케팅, 영업, 기획 실무 담당자들이 파이썬을 활용한 데이터 분석에 재미있게 빠져들 수 있도록 실제 업무에 활용할 수 있거나 흥미로운 예제로 구성돼 있습니다. 이 책을 마치고 나면 데이터를 기반으로 좋은 질문에 답할 수 있는 실력을 키울 수 있을 것입니다.
    ********************************************************************************
    
    소개 
                    실제 주식 데이터를 이용해 파이썬으로 강화학습 주식투자 프로그램을 직접 구현해 봅니다!강화학습은 스스로 학습하는 머신러닝 기법으로 주식 데이터 학습에 잘 적용되는 기법입니다. 이 책은 파이썬을 이용한 강화학습 기반의 주식투자 시뮬레이션 프로그램 개발에 대해 설명합니다. 이를 위한...
    ********************************************************************************
    
    소개 
                    외우기만 해서는 파이썬도 어렵다!
    프로그래밍은 연습으로 배우는 것!
    문법을 외우기만 해서는 파이썬도 배우기 어렵다. 프로그래밍은 개념을... 최고의 학습은 반복이고, 스스로 생각하기다
    파이썬 문법을 학습한 다음에는 반드시 퀴즈를 풀어보게 했다. 퀴즈를 풀어본 다음에는 반드시...
    ********************************************************************************

    CSS 선택자 사용하기

    • select_one(선택자) : 요소 하나 추출 == find(태그, class_, id, attrs={'속성':'값'})

    • select(선택자) : 요소 리스트로 추출 == find_all()

    • 선택자가 들어있는 요소를 select함 값을 선택하는게 아님

    • select_one(.class) 클래스로 하나 가져오기

    book_group = soup.select_one('div.book_group')
    book_group
    <div class="book_group"> <a class="book_thumb _lp_load" href="#" lp-api="?_lp_type=cm&amp;col_prs=csa&amp;format=text&amp;nqx_theme=%7B+%22theme%22%3A%7B%22main%22%3A%7B%22name%22%3A%22book_info%22%2C%22os%22%3A15028688%2C%22pkid%22%3A20000%7D%7D+%7D&amp;query=%25ED%258C%258C%25EC%259D%25B4%25EC%258D%25AC&amp;sm=igr_brg&amp;tab=info&amp;tab_prs=csa&amp;where=bridge" onclick="return tCR('a=bok.img&amp;r=1&amp;i=98000001_000000000000000000E551D0');"> <img alt="혼자 공부하는 파이썬" onerror="on_noimage_book(this, 87, 123, 'bg_nimg2');" src="https://search.pstatic.net/common/?src=https%3A%2F%2Fbookthumb-phinf.pstatic.net%2Fcover%2F150%2F286%2F15028688.jpg%3Ftype%3Dw150%26udate%3D20200321&amp;type=m174_246" width="87"/> <span class="sticker_best">베스트<br>셀러</br></span> </a> <div class="book_info"> <a class="title_area _ellipsis _lp_load" href="#" lp-api="?_lp_type=cm&amp;col_prs=csa&amp;format=text&amp;nqx_theme=%7B+%22theme%22%3A%7B%22main%22%3A%7B%22name%22%3A%22book_info%22%2C%22os%22%3A15028688%2C%22pkid%22%3A20000%7D%7D+%7D&amp;query=%25ED%258C%258C%25EC%259D%25B4%25EC%258D%25AC&amp;sm=igr_brg&amp;tab=info&amp;tab_prs=csa&amp;where=bridge" onclick="return tCR('a=bok.tit&amp;r=1&amp;i=98000001_000000000000000000E551D0');"> <strong class="title _text">혼자 공부하는 파이썬 (파이썬 최신 버전 반영)</strong> </a> <div class="list_info"> <div class="item"> <em class="item_title">저자</em> <div class="item_info type_writer"> <div class="info_box"><span class="info"><span>윤인성</span></span></div> </div> </div> <div class="item"> <em class="item_title">출판</em> <div class="item_info elss"> <span class="info">한빛미디어</span> <time class="info" datetime="yyyy-mm-dd">2019.06.10.</time> </div> </div> <div class="item"> <em class="item_title">리뷰</em> <a class="item_info elss _lp_load" href="#" lp-api="?_lp_type=cm&amp;col_prs=rvw&amp;format=text&amp;nqx_theme=%7B+%22theme%22%3A%7B%22main%22%3A%7B%22name%22%3A%22book_info%22%2C%22os%22%3A15028688%2C%22pkid%22%3A20000%7D%7D+%7D&amp;q_material=book_15028688&amp;query=%25ED%258C%258C%25EC%259D%25B4%25EC%258D%25AC&amp;sm=igr_brg&amp;tab=review&amp;tab_prs=csa&amp;where=bridge" onclick="return tCR('a=bok.review&amp;r=1&amp;i=98000001_000000000000000000E551D0');"> 24건 </a> </div> <div class="item"> <em class="item_title">도서</em> <a class="item_info elss _lp_load" href="#" lp-api="?_lp_type=cm&amp;col_prs=csa&amp;format=text&amp;nqx_theme=%7B+%22theme%22%3A%7B%22main%22%3A%7B%22name%22%3A%22book_info%22%2C%22os%22%3A15028688%2C%22pkid%22%3A20000%7D%7D+%7D&amp;query=%25ED%258C%258C%25EC%259D%25B4%25EC%258D%25AC&amp;sm=igr_brg&amp;tab=purchase&amp;tab_prs=csa&amp;where=bridge" lp-scroll="._tab_root" onclick="return tCR('a=bok.buyb&amp;r=1&amp;i=98000001_000000000000000000E551D0');"> <div class="price_box"> <span class="base"><strong>16,200</strong>원</span> </div> <span class="store spbk_af">판매처 <span class="num">8</span>건</span> </a> </div> </div> </div> <div class="datalab _datalab_wrap"> <a class="datalab_btn elss spbk_af _datalab_btn" data-log="98000001_000000000000000000E551D0|1" href="#"> <span class="logo_datalab spbk">datalab.</span><em class="keyword">20대 남성</em>이 많이 조회한 책입니다. </a> <div class="datalab_body"> <div class="chart"> <div class="pie_chart _donutChart"> <div class="chart_loading _loading"> <div class="api_loading"> <img alt="로딩중" class="bg_bloading2" height="8" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width="100%%"/> <p class="dsc_loading">정보를<br/>가져오는 중입니다.</p> </div> </div> <div class="chart_error _notSupport" style="display:none"> <p class="error_message">미지원<br/>환경입니다.</p> </div> <div class="api_c3p_datalab c3" id="donutChart1" style="height: 123px; position: relative; max-height: 138px;"></div> <div class="gender_group"> <span class="gender_male">남성</span> <span class="gender_female">여성</span> </div> </div> <div class="graph_bar"> <ul> <li> <span class="bar"><span class="fill" style="height:4%">4%</span></span> <div class="label">10대</div> </li> <li> <span class="bar"><span class="fill top" style="height:33%">33%<span class="grade">1</span></span></span> <div class="label">20대</div> </li> <li> <span class="bar"><span class="fill top" style="height:32%">32%<span class="grade">2</span></span></span> <div class="label">30대</div> </li> <li> <span class="bar"><span class="fill" style="height:21%">21%</span></span> <div class="label">40대</div> </li> <li> <span class="bar"><span class="fill" style="height:10%">10%</span></span> <div class="label">50대</div> </li> </ul> </div> </div> <p class="chart_info">최근 6개월 간의 조회/클릭수를 기반으로 생성한 빅데이터 분석 정보입니다. 매일 오전 9시 업데이트</p> </div> </div> </div>
    • select_one(#id) 아이디로 하나 가져오기

    book_aside = soup.select_one('div#aside')
    book_aside
    <div id="aside"><section class="api_subject_bx nrealtime_srch type_old" id="_keywordRank"> <div class="group_title"> <div class="_menu tab_menu" role="tablist"> <a aria-selected="false" class="tab _tab" href="#" onclick="tCR('a=brk_old*r.tab&amp;r=&amp;i=&amp;m=0&amp;u=javascript'); return false;" role="tab">급상승 검색어</a> <a aria-selected="true" class="tab selected _tab" href="#" onclick="tCR('a=brk_old*h.tab&amp;r=&amp;i=&amp;m=0&amp;u=javascript'); return false;" role="tab">뉴스토픽</a> </div> </div> <div class="_content group_ranking type_realtime" style="display:none"> <div class="title_area"> <h3 class="title">급상승 검색어</h3> </div> <div class="group_kwd"> <div class="_submenu tab_area"> <ul class="realtime_tab" role="tablist"> <li class="item" role="presentation"> <a aria-selected="true" class="_tab tab selected" href="#" onclick="tCR('a=brk_old*r.lefttab&amp;r=&amp;i=&amp;m=0&amp;u=javascript'); return false;" role="tab"> <span class="tab_inner">1~10위</span> </a> </li> <li class="item" role="presentation"> <a class="_tab tab" href="#" onclick="tCR('a=brk_old*r.righttab&amp;r=&amp;i=&amp;m=0&amp;u=javascript'); return false;" role="tab"> <span class="tab_inner">11~20위</span> </a> </li> </ul> </div> <div class="_flicking flick-wrap"> <div style="display:none"> <div class="rtime_srch"> <ol class="lst_kwd"> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EC%9E%84%EC%98%81%EB%AF%BC" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">1</em><span class="tit">임영민</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EB%8C%80%EA%B5%AC+%EC%8B%A0%EC%84%B8%EA%B3%84%EB%B0%B1%ED%99%94%EC%A0%90" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">2</em><span class="tit">대구 신세계백화점</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EB%B0%95%EB%B4%84" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">3</em><span class="tit">박봄</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EA%B9%80%EA%B5%AC%EB%9D%BC+%EC%97%AC%EC%9E%90%EC%B9%9C%EA%B5%AC" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">4</em><span class="tit">김구라 여자친구</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%ED%9D%AC%EC%83%9D%EB%B6%80%ED%99%9C%EC%9E%90" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">5</em><span class="tit">희생부활자</span></a></div></li> </ol> <ol class="lst_kwd" start="6"> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EC%8D%AC%ED%82%A4%EC%8A%A4+%ED%8C%A8%EB%B0%80%EB%A6%AC" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">6</em><span class="tit">썬키스 패밀리</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EB%A6%AC%EC%B9%98%EC%9B%A8%EC%9D%B4" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">7</em><span class="tit">리치웨이</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EC%84%9C%EC%9A%B8%EC%A7%80%EB%B0%A9%EA%B2%BD%EC%B0%B0%EC%B2%AD" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">8</em><span class="tit">서울지방경찰청</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EB%8F%84%EB%B4%89%EA%B5%AC%EC%B2%AD" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">9</em><span class="tit">도봉구청</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EB%B0%95%EB%B4%84+%EB%A6%AC%EC%A6%88" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">10</em><span class="tit">박봄 리즈</span></a></div></li> </ol> </div> </div> <div style="display:none"> <div class="rtime_srch"> <ol class="lst_kwd" start="11"> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EC%9D%B4%EC%9E%AC%EC%9A%A9" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">11</em><span class="tit">이재용</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EB%93%9C%EB%A6%BC%ED%85%8D" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">12</em><span class="tit">드림텍</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EC%9D%B4%EC%9A%A9%EC%B0%AC" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">13</em><span class="tit">이용찬</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%ED%95%B4%EB%B3%91%EB%8C%80" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">14</em><span class="tit">해병대</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EC%BD%94%EC%97%94%ED%85%8D" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">15</em><span class="tit">코엔텍</span></a></div></li> </ol> <ol class="lst_kwd" start="16"> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EC%97%A0%EC%B9%B4%EC%9A%B4%ED%8A%B8%EB%8B%A4%EC%9A%B4" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">16</em><span class="tit">엠카운트다운</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EC%B9%A8%EC%9E%85%EC%9E%90" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">17</em><span class="tit">침입자</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EB%B0%B1%EC%A7%80%EC%98%81+%EB%82%98%EC%9D%B4" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">18</em><span class="tit">백지영 나이</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EA%B2%BD%EA%B8%B0%EB%82%A8%EB%B6%80%EC%A7%80%EB%B0%A9%EA%B2%BD%EC%B0%B0%EC%B2%AD" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">19</em><span class="tit">경기남부지방경찰청</span></a></div></li> <li><div class="bx"><a class="keyword" href="?where=m&amp;sm=mtb_lve.agallgrpmamsi0en0sp0&amp;query=%EC%B2%9C%EC%95%88+%EA%B3%84%EB%AA%A8" onclick="return nx_mrecm.cr(this, 'a=brk_old*r.kwd&amp;r=&amp;i=&amp;u=', 'a=brk_old*r.rkwd&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><em class="num">20</em><span class="tit">천안 계모</span></a></div></li> </ol> </div> </div> </div> <div class="rtime_area"> <span class="time">2020.06.04. 18:10 기준</span> </div> <div class="info_area"> <span class="cmm_dpgs"> <span class="cmm_dp cmm_dp_on _page" title="현재 페이지">1</span> <span class="cmm_dp _page">2</span> </span> <a class="link_history" href="https://m.datalab.naver.com/realtimeList.naver?where=search" onclick="return goOtherCR(this, 'a=brk_old*r.trmore&amp;r=&amp;i=&amp;u='+urlencode(urlexpand(this.href)));"><i class="spnew ico_datalab">DataLab</i><i class="spnew ico_arr"></i></a> </div> </div> </div> <div class="_content group_ranking type_topic"> <div class="title_area"> <h3 class="title">뉴스토픽</h3> </div> <div class="group_kwd"> <div class="_submenu tab_area"> <ul class="realtime_tab" role="tablist"> <li class="item" role="presentation"> <a aria-selected="true" class="_tab tab selected" href="#" onclick="tCR('a=brk_old*h.nws&amp;r=&amp;i=&amp;m=0&amp;u=javascript'); return false;" role="tab"> <span class="tab_inner">뉴스</span> </a> </li> <li class="item" role="presentation"> <a class="_tab tab" href="#" onclick="tCR('a=brk_old*h.ents&amp;r=&amp;i=&amp;m=0&amp;u=javascript'); return false;" role="tab"> <span class="tab_inner">연예·스포츠</span> </a> </li> </ul> </div> <div class="_flicking flick-wrap"> <div> <div class="hotkwd"> <ol class="lst_kwd"> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=%EC%9D%B4%EC%9E%AC%EC%9A%A9+%EA%B5%AC%EC%86%8D%EC%98%81%EC%9E%A5+%EC%B2%AD%EA%B5%AC" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">1</em><span class="tit">이재용 구속영장 청구</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=%EA%B9%80%EC%A2%85%EC%9D%B8+%EC%8B%AC%EC%83%81%EC%A0%95" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">2</em><span class="tit">김종인 심상정</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=%ED%83%9C%EC%95%88%EC%97%90+%EC%A0%95%EC%B2%B4%EB%B6%88%EB%AA%85+%EA%B3%A0%EB%AC%B4%EB%B3%B4%ED%8A%B8" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">3</em><span class="tit">태안에 정체불명 고무보트</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=%ED%95%98%EB%A3%A8+300%EB%A7%8C%EC%9E%A5+%EC%83%9D%EC%82%B0" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">4</em><span class="tit">하루 300만장 생산</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=9%EC%A3%BC+%EB%A7%8C%EC%97%90+%EB%B3%B4%ED%95%A9+%EC%A0%84%ED%99%98" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">5</em><span class="tit">9주 만에 보합 전환</span></span><em class="rank new"><span>NEW</span></em></a></li> </ol> <ol class="lst_kwd" start="6"> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=%EC%9A%B1%ED%95%B4%EC%84%9C+%EC%8B%A4%EC%88%98" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">6</em><span class="tit">욱해서 실수</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=%EA%B9%80%EC%97%AC%EC%A0%95+%EB%8B%B4%ED%99%94" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">7</em><span class="tit">김여정 담화</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=%EA%B9%80%EA%B7%BC%EC%9D%B5+%EC%B5%9C%EC%84%B1%EC%9D%BC+%EA%B9%80%EB%8F%84%EC%9D%B8+%EC%9E%84%EB%AA%85" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">8</em><span class="tit">김근익 최성일 김도인 임명</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=%EB%B3%91%EC%9B%90+%EC%B9%98%EB%A3%8C+%EC%A4%91" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">9</em><span class="tit">병원 치료 중</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.nws&amp;query=%EA%B9%80%EC%97%AC%EC%A0%95+%EA%B2%BD%EA%B3%A0" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.nwslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">10</em><span class="tit">김여정 경고</span></span><em class="rank new"><span>NEW</span></em></a></li> </ol> </div> </div> <div style="display:none"> <div class="hotkwd"> <ol class="lst_kwd"> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EC%9D%8C%EC%A3%BC%EC%9A%B4%EC%A0%84+%EC%9E%84%EC%98%81%EB%AF%BC" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">1</em><span class="tit">음주운전 임영민</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EC%82%AC%EC%9D%B4%EC%BD%94%EC%A7%80%EB%A7%8C+%EA%B4%9C%EC%B0%AE%EC%95%84+%EA%B9%80%EC%88%98%ED%98%84" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">2</em><span class="tit">사이코지만 괜찮아 김수현</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EB%86%80%EB%A9%B4+%EB%AD%90%ED%95%98%EB%8B%88+%EC%9D%B4%ED%9A%A8%EB%A6%AC" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">3</em><span class="tit">놀면 뭐하니 이효리</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EC%A0%95%EC%86%8C%EB%AF%BC+%EB%8F%8C%EB%B0%9C%ED%96%89%EB%8F%99%EC%97%90+%EC%B6%A9%EA%B2%A9" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">4</em><span class="tit">정소민 돌발행동에 충격</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EB%B0%A5%EB%B8%94%EB%A0%88%EC%8A%A4%EC%9C%A02+%EC%9D%B4%EC%82%AC%EB%B0%B0" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">5</em><span class="tit">밥블레스유2 이사배</span></span><em class="rank new"><span>NEW</span></em></a></li> </ol> <ol class="lst_kwd" start="6"> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EC%82%AC%EB%9E%91%EC%9D%98+%EC%BD%9C%EC%84%BC%ED%83%80+%EC%9E%84%EC%98%81%EC%9B%85" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">6</em><span class="tit">사랑의 콜센타 임영웅</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EB%82%98%ED%98%BC%EC%9E%90%EC%82%B0%EB%8B%A4+%EC%86%90%EB%8B%B4%EB%B9%84" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">7</em><span class="tit">나혼자산다 손담비</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EC%98%81%ED%98%BC%EC%88%98%EC%84%A0%EA%B3%B5+%EC%8B%A0%ED%95%98%EA%B7%A0" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">8</em><span class="tit">영혼수선공 신하균</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EC%98%A4%EB%A7%88%EB%B2%A0+%EA%B3%A0%EC%A4%80" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">9</em><span class="tit">오마베 고준</span></span><em class="rank new"><span>NEW</span></em></a></li> <li><a class="bx" href="?where=m&amp;sm=mtb_htp.ent&amp;query=%EB%B0%95%EB%B4%84+%EC%86%8C%EA%B0%90" onclick="return nx_mrecm.cr(this, 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', 'a=brk_old*h.entslist&amp;r=&amp;i=&amp;u=', urlencode(urlexpand(this.href)));"><span class="keyword"><em class="num">10</em><span class="tit">박봄 소감</span></span><em class="rank new"><span>NEW</span></em></a></li> </ol> </div> </div> </div> <div class="rtime_area"> <span class="time">2020.06.04. 11:30 ~ 14:30 기준</span> <a class="btn_info _toggleTrigger" href="#" onclick="tCR('a=brk_old*h.infop&amp;r=&amp;i=&amp;m=0&amp;u=javascript'); return false;" role="button"><i class="spnew api_ico_alert">정보확인</i></a> <div class="ly_api_info _toggleTarget"> <p class="dsc">뉴스토픽 섹션은 언론사 기사 섹션 기반으로 자동 분류됩니다</p> <button class="btn_close _toggleTrigger" onclick="tCR('a=brk_old*h.infocl&amp;r=&amp;i=&amp;m=0&amp;u=javascript'); return false;" type="button"><i class="spnew ico_close">정보확인 레이어 닫기</i></button> </div> </div> <div class="info_area"> <span class="cmm_dpgs"> <span class="cmm_dp cmm_dp_on _page" title="현재 페이지">1</span> <span class="cmm_dp _page">2</span> </span> </div> </div> </div> <script type="text/javascript"> var nx_mrecm = nx_mrecm || {}; nx_mrecm.cr = function(a, u1, u2, url) { if (a.href) { if ($Document(document).clientSize().width < 1024) goOtherCR(a, u1 + url); else goOtherCR(a, u2 + url); } }; (function(){ nx_js_defer_load("https://ssl.pstatic.net/sstatic/au/m/keywordRank/nhn.mobile.search.keywordRank_181002.js", function () { var initInstance = new nhn.mobile.search.keywordRank.Controller({ baseSelector: "#_keywordRank" }).on({ "flicking" : function(params){ var logNext = ['a=brk_old*r.righttab&r=&i=&m=0&u=javascript', 'a=brk_old*h.ents&r=&i=&m=0&u=javascript']; var logBefore = ['a=brk_old*r.lefttab&r=&i=&m=0&u=javascript', 'a=brk_old*h.nws&r=&i=&m=0&u=javascript']; if(params.isNext){ tCR(logNext[params.tabIndex]); }else{ tCR(logBefore[params.tabIndex]); } } }); }, 150); })(); </script> </section> </div>
    • select_one(태그명) 태그 하나로 가져오기

    book_img = book_group.select_one('img')
    book_img
    <img alt="혼자 공부하는 파이썬" onerror="on_noimage_book(this, 87, 123, 'bg_nimg2');" src="https://search.pstatic.net/common/?src=https%3A%2F%2Fbookthumb-phinf.pstatic.net%2Fcover%2F150%2F286%2F15028688.jpg%3Ftype%3Dw150%26udate%3D20200321&amp;type=m174_246" width="87"/>
    • 속성으로 값 가져오기 [속성값]

    book_alt = book_img['alt']
    book_alt
    '혼자 공부하는 파이썬'
    book_href = book_group.select_one('a')['href']
    book_href
    '#'

    'Python' 카테고리의 다른 글

    Web-Crawling (네이버 영화)  (0) 2020.06.05
    Web-Crawling (네이버 북)  (0) 2020.06.04
    Jupyter Notebook  (0) 2020.06.02
    Python 가상환경 생성 및 R 주피터 노트북 연결  (0) 2020.06.02
    Python - Flask 활용  (1) 2020.05.29
Designed by Tistory.