지구정복

[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기(requests, BeautifulSoup) 본문

데이터 엔지니어링 정복/Python

[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기(requests, BeautifulSoup)

eeaarrtthh 2021. 5. 16. 22:11
728x90
반응형
SMALL

먼저 pip3를 이용해서 requests랑 BeautifulSoup4를 설치한다.

 

pip3 설치는 아래글 참고

https://earthconquest.tistory.com/224

 

pip3 install requests
pip3 install BeautifulSoup4

 

 

개발도구는 이클립스에 Pedev를 사용한다.

이클립스 상단 메뉴 - window - preperence - PyDev - Interpreters - Python Interpreter

/usr/bin/에 있는 것을 클릭한다.

그리고 Apply and Close

 

 

 

-네이버 검색어에 '날씨'입력하고 거기서 미세먼지랑 초미세먼지 크롤링하기

'''
Created on 2021. 5. 16.

@author: master
'''


from bs4 import BeautifulSoup as bs
from pprint import pprint
import requests

html = requests.get('https://search.naver.com/search.naver?query=날씨')
#pprint(html.text)

soup = bs(html.text, 'html.parser')

#find는 특정 태그 찾는 메소드
data1 = soup.find( 'div', {'class':'detail_box'})
#pprint( data1 )

#findAll은 data1아래에 있는 모든 태그들 중 'dd'태그만 찾는다.
data2 = data1.findAll( 'dd' )
#pprint( data2 )

fine_dust = data2[0].find('span', {'class':'num'}).text
print( fine_dust )

ultra_dust = data2[1].find('span', {'class':'num'}).text
print( ultra_dust )



================
1㎍/㎥
0㎍/㎥

 

 

-네이버 웹툰 요일별 제목 크롤링하기

'''
Created on 2021. 5. 16.

@author: master
'''

from bs4 import BeautifulSoup as bs
from pprint import pprint
import requests

html = requests.get('https://comic.naver.com/webtoon/weekday.nhn')
#pprint( html.text )

soup = bs(html.text, 'html.parser')
html.close()

#요일별 웹툰영역 추출하기
data1_list = soup.findAll('div', {'class':'col_inner'})
#pprint( data1_list )

#전체 웹툰 리스트
week_title_list = []

for data1 in data1_list:
    data2=data1.findAll('a', {'class':'title'})
    
    title_list = [t.text for t in data2]
    
    #요일별로 append시켜주어서 2차원 배열로 만든다.
    week_title_list.append( title_list )

pprint( week_title_list )


=================
[['참교육',
  '뷰티풀 군바리',
  '소녀의 세계',
  '윈드브레이커',
  '파이게임',
  '장씨세가 호위무사',
  '삼매경',
  '만렙돌파',
  '황제와의 하룻밤',
  '칼가는 소녀',
  '요리GO',
  '유일무이 로맨스',
  '잔불의 기사',
  '야생천사 보호구역',
  '수영만화일기',
  '신의 탑',
  '히어로메이커',
  '오늘의 순정망화',
  '리턴 투 플레이어',
  '결혼생활 그림일기',
  '평범한 8반',
  '싸이코 리벤지',
  '기사님을 지켜줘',
  '순정말고 순종',
  '사랑의 헌옷수거함',
  '브랜든',
  '바이러스X',
  '꿈의 기업',
  '착한건 돈이된다',
  '살아간다',
  '아는 여자애',
  '선배, 그 립스틱 바르지 마요',
  '왕따협상',
  '사막에 핀 달',
  '침범',
  '피플',
  '마지막 지수',
  '이중첩자',
  '중독연구소',
  '원하는 건 너 하나',
  '라서드',
  '개밥 먹는 남자',
  '이탄국의 자청비',
  '앵무살수',
  '뱀파이어의 꽃',
  '백호랑',
  '그림자 신부',
  '드로잉 레시피',
  '인간의 온도',
  '하슬라',
  '오로지 오로라',
  '트리거',
  '헬로맨스',
  '보살님이 캐리해!',
  '모락모락 왕세자님'],
 ['바른연애 길잡이',
  '여신강림',
  '엽총소년',
  '한림체육관',
  '하루만 네가 되고 싶어',
  '랜덤채팅의 그녀!',
  '사신소년',
  '신도림',
  '몬스터',
  '헬58',
  '삼국지톡',
  '호랑이 들어와요',
  '달콤살벌한 부부',
  '오피스 누나 이야기',
  '원주민 공포만화',
  '집이 없어',
  '위아더좀비',
  '나는 어디에나 있다',
  '윌유메리미',
  '하우스키퍼',
  '오늘의 순정망화',
  '급식러너',
  '견우와 선녀',
  '그녀석 정복기',
  '플레이, 플리',
  '용왕님의 셰프가 되었습니다',
  '성인초딩',
  '빌런투킬',
  '프린스 메이커',
  '악인',
  '아이즈',
  '3cm 헌터',
  '빅맨',
  '올가미',
  '은주의 방 2~3부',
  '하나in세인',
  '제로게임',
  '대신 심부름을 해다오',
  '찐:종합게임동아리',
  '나타나주세요!',
  '아이레',
  '연우의 순정',
  '숲속의 담',
  '별종',
  '열녀박씨 계약결혼뎐',
  '오파츠',
  '필살VS로맨스',
  '자판귀',
  '빛빛빛',
  '조선홍보대행사 조대박',
  '언메이크',
  '안식의 밤',
  '완벽한 가족',
  '나의 플랏메이트',
  '도를 아십니까',
  '태시트',
  '풋내기들',
  '피로만땅',
  '인문학적 감수성'],
 ['헬퍼 2 : 킬베로스',
  '전지적 독자 시점',
  '복학왕',
  '모죠의 일지',
  '급식아빠',
  '튜토리얼 탑의 고인물',
  '격기3반',
  '캐슬',
  '세상은 돈과 권력',
  '노곤하개',
  '화산귀환',
  '하렘의 남자들',
  '남주의 첫날밤을 가져버렸다',
  '일렉시드',
  '연놈',
  '엔딩 후 서브남을 주웠다',
  '나쁜사람',
  '고삼무쌍',
  '닥터앤닥터 육아일기',
  '원수를 사랑하라',
  '빌드업',
  '판타지 여동생!',
  '여주실격!',
  '오징어도 사랑이 되나요?',
  '마른 가지에 바람처럼',
  '귀곡의 문',
  '각자의 디데이',
  '언덕 위의 제임스',
  '마녀와 용의 신혼일기',
  '방탈출',
  '사상최강',
  '수요웹툰의 나강림',
  '아도나이',
  '웰컴 온보드',
  '로어 올림푸스',
  '새벽 두 시의 신데렐라',
  '내 룸메이트는 마네킹',
  '더 트웰브',
  '이츠마인',
  '반귀',
  '럭키언럭키',
  '범이올시다!',
  '얼굴천재',
  '칼부림',
  '당신의 향수',
  '말하는대로',
  '속보입니다',
  '뱀은 꽃을 먹는가',
  '신선비',
  '인터셉트',
  '스캔들',
  '해귀',
  '기억흔적',
  '천도',
  '노선도',
  '수상한 비밀상담부',
  '스몰',
  '시효완성',
  '저승사자 출입금지'],
 ['독립일기',
  '더 복서',
  '연애혁명',
  '기기괴괴',
  '이두나!',
  '나노마신',
  '노답소녀',
  '전자오락수호대',
  '화이트 블러드',
  '정글쥬스',
  '겟백',
  '하드캐리',
  '무사만리행',
  '흑막 여주가 날 새엄마로 만들려고 해',
  '당신의 과녁',
  '수영만화일기',
  '던전 씹어먹는 아티팩트',
  '트롤트랩',
  '꽃만 키우는데 너무강함',
  '신비',
  '오늘의 순정망화',
  '쿠베라',
  '선의의 경쟁',
  '최강전설 강해효',
  '혼모노트',
  '온실 속 화초',
  '그 개, 만두',
  '소년의 기록',
  '시월드 판타지',
  '마계인섬',
  '만물의 영장',
  '불편한 관계',
  '별을 삼킨 너에게',
  '자취방 신선들',
  '그 황제가 시곗바늘을 되돌린 사연',
  '집사레인저',
  '롤랑롤랑',
  '야만의 시대',
  '달의 요람',
  '로그아웃',
  '성스러운 아이돌',
  '안개무덤',
  '어차피 남편은!',
  '겟라이프',
  '루커피쳐',
  '멸망X초이스',
  '모어 라이프',
  '셈하는 사이',
  '소녀180',
  '유리와 유리와 유리',
  '불릿 6미리',
  '미드나잇 체이서',
  '카루나',
  '밤하늘에 구름운',
  '보물과 괴물의 도시',
  '바른탕진 프로젝트',
  '헬프미'],
 ['외모지상주의',
  '갓 오브 하이스쿨',
  '데드퀸',
  '재혼 황후',
  '1초',
  '개를 낳았다',
  '성경의 역사',
  '여성전용헬스장 진달래짐',
  '삼국지톡',
  '낙향문사전',
  '그들이 사귀는 세상',
  '엽사:요괴사냥꾼',
  '더 게이머',
  '세기말 풋사과 보습학원',
  '살人스타그램',
  '뫼신 사냥꾼',
  '걸어서 30분',
  '히어로 킬러',
  '주님, 악마가 되게 해주세요!',
  '플레이어',
  '환상의 용',
  '난약',
  '상남자',
  '로판 빙의 만화',
  '복학생 정순이',
  '구남친이 내게 반했다',
  '스포',
  '고래별',
  '그 기사가 레이디로 사는 법',
  '아찔한 전남편',
  '금혼령-조선혼인금지령',
  '거래',
  '가슴털 로망스',
  '악몽일기',
  '태권보이',
  'A.I. 닥터',
  '감자마을',
  '사람의 조각',
  '찬란하지 않아도 괜찮아, 새벽',
  '닥터 프로스트 시즌 3~4',
  '피와 나비',
  '후덜덜덜 남극전자',
  '썸내일',
  '나쁜 쪽으로',
  '빨리감기',
  '방과후 선녀',
  '너의 미소가 함정',
  '도무지 그애는',
  '몽홀',
  '감히',
  '구독금지',
  '백년게임',
  '버그: 스티그마',
  '꽃 피우는 남자',
  '트럼프',
  '진짜 정말 맹세코 좋아해',
  '구주의 시간',
  '강림전기 개정기',
  '히트포인트',
  '매지컬 메디컬'],
 ['호랑이형님',
  '프리드로우',
  '모죠의 일지',
  '취사병 전설이 되다',
  '욕망일기',
  '광장',
  '노곤하개',
  '힙한남자',
  '민간인 통제구역',
  '청춘 블라썸',
  '토끼대왕',
  '아홉수 우리들',
  '윌유메리미',
  '나이트런',
  '좀비 파이트',
  '나를 바꿔줘',
  '어글리후드',
  '지옥급식',
  '갓핑크',
  '동트는 로맨스',
  '반드시 해피엔딩',
  '피라미드 게임',
  '중매쟁이 아가 황녀님',
  '두번째 생일',
  '2-3승강장',
  '공유몽',
  '왕년엔 용사님',
  '단편.zip',
  '키스 식스 센스',
  '더 나우',
  '남자주인공의 여자사람친구입니다',
  '먹이',
  '광해의 연인',
  '내게 필요한 NO맨스',
  '웰캄투실버라이프',
  '태백 : 튜토리얼 맨',
  '홍시는 날 좋아해!',
  '군주',
  '왕세자 입학도',
  '아가사',
  '율리',
  '저무는 해, 시린 눈',
  '꼬리 있는 연애',
  '동네몬스터',
  '압락사스',
  '팔려 온 신부',
  '좋은데 어떡해',
  '모두 너였다',
  '오늘부터 천생연분',
  '후아유!',
  '도사 가온',
  '손 잡아 볼래?',
  '안녕, 이바다씨',
  '아테나 컴플렉스',
  '아침을 지나 밤으로',
  '언플래시레슨',
  '친구의 비밀계정',
  '인간졸업',
  '누군가의 로섬',
  '함부로 대해줘',
  '어른의 계절'],
 ['독립일기',
  '싸움독학',
  '약한영웅',
  '이번 생도 잘 부탁해',
  '열렙전사',
  '입학용병',
  '맘마미안',
  '소녀재판',
  '테러대부활',
  '닥터앤닥터 육아일기',
  '곱게 키웠더니, 짐승',
  '천하제일인',
  '나만 보여!',
  '오로지 너를 이기고 싶어',
  '동생친구',
  '살아남은 로맨스',
  '행성인간',
  '내일',
  '마법스크롤 상인 지오',
  '합격시켜주세용',
  '구름이 피워낸 꽃',
  '별이삼샵',
  '가비지타임',
  '다이스(DICE)',
  'AI가 세상을 지배한다면',
  '로어 올림푸스',
  '판사 이한영',
  '벚꽃이 흩날릴 무렵',
  '강남도깨비',
  '사람은 고쳐 쓰는 게 아니야!',
  '학교정벌',
  '푸른불꽃',
  '평행도시',
  '라일락 200%',
  '아르세니아의 마법사',
  '결혼까지 망상했어!',
  '굿 리스너',
  '데빌샷',
  '두근두근 연극부',
  '오른눈이 보는 세계',
  '잉여특공대',
  '조선여우스캔들',
  '오늘 밤만 재워줘',
  '라커, 오프너',
  '소녀 해미',
  '위험한 신입사원',
  '마도',
  '데이즈',
  '신이 담긴 아이',
  '죽여주는 탐정님',
  '샤인 스타',
  '스트러글',
  '호시탐탐',
  '가짜인간',
  '호수의 인어']]

 

-네이버 웹툰 썸네일 가져오기

'''
Created on 2021. 5. 16.

@author: master
'''


from bs4 import BeautifulSoup as bs
from pprint import pprint
import requests, re, os
from urllib.request import urlretrieve

#저장폴더 생성
try:
    if not( os.path.isdir( 'image' ) ):
        os.makedirs(os.path.join( 'image' ) )
    else:
        print('already folder')
        exit()
except OSError as e:
    print( 'etc error' )
    exit()


html = requests.get('https://comic.naver.com/webtoon/weekday.nhn')
#pprint( html.text )

soup = bs(html.text, 'html.parser')
html.close()

data1_list = soup.findAll( 'div', {'class':'col_inner'})

#전체 웹툰 리스트
li_list = []
for data1 in data1_list:
    li_list.extend( data1.findAll('li') )
    
for li in li_list:
    img = li.find('img')
    title = img['title']
    img_src = img['src']
    #print( title, img_src )
    
    #re모듈은 정규식표현쓸 때 사용한다.
    title = re.sub('[^00-9a-zA-Zㄱ-힗]', '', title)
    
        #urlretrieve는 해당url을 다운로드한다.
    urlretrieve( img_src, './image/'+title+'.jpg')
    
    
    

 

 

 

 

 

 

 

 

 

 

 

출처 : https://wikidocs.net/35953

728x90
반응형
LIST
Comments