2018-05-28 TIL(크롤링)

크롤링 연습

def get_text(tag_string):
         return "tag_string의 내용 문자열을 리턴"

        ex) <a href="abc.html">링크</a>
            -> '링크'를 리턴

sample.html

<a href="/webtoon/list.nhn?titleId=710390&weekday=thu" onclick="clickcr(this,'thm*T.tit','','28',event)" class="title" title="비둘기가 물고 온 남자">비둘기가 물고 온 남자</a>
<a href="/webtoon/list.nhn?titleId=657948&weekday=thu" onclick="clickcr(this,'thm*T.tit','','27',event)" class="title" title="서북의 저승사자">서북의 저승사자</a>
<a href="/webtoon/list.nhn?titleId=693444&weekday=thu" onclick="clickcr(this,'thm*T.tit','','26',event)" class="title" title="Doll 체인지">Doll 체인지</a>
<span class="ico_cut">컷툰</span>
<h4 class="sat"><span>토요 웹툰</span></h4>
<p class="author2"><a href="#" onclick="clickcr(this,'mom.artist','710762','2',event); return artistAction.viewArtist('710762', this);" title="마인드C / 김명현">마인드C/김명현</a></p>
<p>어중간하게 태어난 반쪽짜리 능력자들의 블록버스터급 일상...</p>

sample.html에서 태그 문자 안쪽의 결과 가져오기

import re

def get_text(tag_string):
    html = open('data/sample.html', 'rt',encoding='UTF-8').read()
    r = '<'+tag_string+'.*?>(.*?)</'+tag_string
    parsing_str = re.findall(r, html)

    return '\n'.join(parsing_str)

print(get_text('a'))

비둘기가 물고 온 남자
서북의 저승사자
Doll 체인지
마인드C/김명현

특정 태그의 속성을 파싱하는 구현하는 함수

def get_tag_attr(tag_string, attr):
    html = open('data/sample.html', 'rt', encoding='UTF-8').read()
    r = '<'+tag_string+'.*?'+attr+'="(.*?)".*?>'
    parsing_str = re.findall(r, html)

    return parsing_str
print(get_tag_attr('p', 'class'))

['author2']

Comments