본문 바로가기

방법

[웹크롤링] 'title', 'src', 'href' 속성에 있는 텍스트 크롤링하기 웹 크롤링을 하다 보면, 'title', 'src', 'href' 속성에 있는 텍스트 또는 url을 크롤링해야 할 수 있는데요, 태그 이름 또는 클래스 이름으로 찾는 방법은 쉽지만 title, src, href과 같은 속성으로 텍스트를 추출하는 방법을 잘 모를 수 있습니다. 따라서 코드를 살펴보면서 크롤링하는 방법에 대해서 알아볼건데요, 예시로 아래 이미지처럼 네이버 뉴스 기사에서 '서울경제'라는 이미지가 있는 태그에서 '서울경제'라는 텍스트를 추출해보겠습니다. 오른쪽 태그를 더 자세히 보면, 라는 상위 태그 아래 태그에 'title'속성에 '서울경제'라는 텍스트가 적혀있는 것을 확인할 수 있습니다. 이제 이 텍스트를 크롤링하는 코드에 대해서 살펴보도록 하겠습니다. url = https://news.na.. 더보기
[웹크롤링] 동일한 이름의 여러 태그 중 두 번째 태그 찾는 방법 웹 크롤링을 할 때, 특정한 텍스트 또는 이미지를 크롤링할 때, 가장 하위에 있는 태그를 보면 class 이름이 없거나, 다른 데이터와 같은 이름의 class가 있어서 특정한 태그를 찾기 어려울 수 있습니다. 만약 아래 이미지와 같이 상위태그 이름이 , 클래스 이름이 'list_news' 인 태그 아래 하위 태그인 태그에서 두 번째에 있는 태그를 크롤링하고 싶다면 어떻게 해야할까요? 만약 두 번째 태그를 크롤링하고 싶다면 우선 상위 태그인 태그를 추출해야 합니다. text1 = soup.find_all('ul', 'list_news') 위와 같이 입력하면 text1 에는 모든 태그에 대한 내용이 담겨 있는데요, 두 번째 태그만 추출하기 위해 for문을 사용하면 된답니다. 아래 코드를 보도록 하겠습니다. .. 더보기
[웹크롤링] 네이버 - 페이지 자동으로 넘기는 방법 네이버 홈페이지에서 검색어를 입력한 뒤, '뉴스' 탭에서 뉴스 기사 제목들을 크롤링할 때 한 페이지 당 10개의 기사가 나오는데요, 페이지를 넘기지 않는다면 10개까지밖에 크롤링이 되지 않습니다. 따라서 자동으로 페이지를 넘기고, 다시 기사 제목을 크롤링해야 하는데요, 코드를 어떻게 입력해야 페이지를 자동으로 넘길 수 있을까요? 해답은 바로, url 주소에 있는데요, 예를 들어, 네이버 검색창에 '여행'이라고 검색한 다음 뉴스 탭을 누르면 나오는 첫 페이지의 주소가 다음과 같습니다. https://search.naver.com/search.naver?where=news&sm=tab_jum&query=여행 한편, 두 번째 페이지와 세 번째 페이지를 각각 누른 뒤에 주소는 아래와 같이 나오게 됩니다. htt.. 더보기
[웹크롤링] 쿠팡 사이트 크롤링 - 오류 없이 접속하는 방법 (requests 사용) selenium, 크롬 드라이버를 이용해서 쿠팡 사이트에 접속하는 방법은 쉬운데요, 이번 글에서는 requests 라이브러리를 이용하여 쿠팡 사이트에 접속하는 방법에 대해 알아보도록 하겠습니다. 먼저, 기본적으로 원하는 페이지에 접속하는 코드는 다음과 같습니다. from bs4 import BeautifulSoup import requests url = "https://www.coupang.com/" resp = requests.get(url) print(resp) 보통 url에 해당 주소를 입력하고 requests.get(url)로 접속한 뒤 반환된 값을 출력하면 Response [200] 이 출력되어야 하는데요, 위 코드와 같이 쿠팡 주소를 입력한 뒤 접속을 하면 반환값이 출력되지 않고 무한로딩이 됩.. 더보기
[데이터분석] 여러 리스트로 데이터 프레임 만들고 엑셀(excel)로 저장하기 1. 리스트로 데이터 프레임 만들기 여러 리스트가 있다면 이러한 리스트를 모아서 데이터프레임을 만들 수 있는데요, 아래와 같이 3개의 리스트가 있다고 가정해보겠습니다. item = ['아메리카노', '라떼', '차', '에이드', '쥬스'] price = [3500, 4000, 4500, 5000, 4000] rating = [4.2, 3.4, 4.4, 4.0, 3.9] 그리고나서, 위 리스트로 'cafe' 라는 이름의 데이터프레임을 만들고 출력해보겠습니다. import pandas as pd cafe = pd.DataFrame() cafe['항목'] = item cafe['가격'] = price cafe['별점'] = rating display(cafe) # output : 항목가격별점 0아메리카노35.. 더보기
[웹크롤링] 크롤링 데이터 저장 - 중복되지 않는 폴더 생성 방법 (현재 날짜 / 시간 사용) 대량의 이미지를 크롤링하고 저장하는 경우, 중간에 다시 시작해버리면 덮어쓰기가 돼버려서 이전에 저장했던 이미지가 사라질 수 있는데요, 이러한 경우 어떻게 해야 할까요? 다시 시작할 때마다 폴더의 이름을 바꾸기엔 비효율적일 수 있습니다. 따라서 이에 대한 해결책은 바로 폴더명을 현재 날짜, 시간이 들어가게 만들면 되는데요, 이러한 이름으로 폴더를 만들게 되면 절대 폴더가 중복되지 않습니다. 한편, 현재 시간을 측정하기 위해 time 라이브러리를 사용해야 하는데요, 아래 코드를 보면서 현재 날짜, 시간이 들어간 폴더 생성 방법에 대해 알아보도록 하겠습니다. 먼저, 전체 코드를 보도록 하겠습니다. import time basic_dir = "c:\\test\\" #저장할 기본경로 n = time.localti.. 더보기
[웹크롤링] 텍스트 크롤링 - '\n' 와 같이 불필요한 텍스트 없애기 글이나 뉴스 기사 등을 크롤링할 때, 텍스트 앞 뒤로 '\n' 라는 문자가 같이 출력되는 것을 종종 볼 수 있는데요, '\n'은 줄 바꿈을 의미하는 문자로, 의미가 없기 때문에 삭제하고 저장하는 것이 좋습니다. 한편, '\n'이라는 문자를 없애기 위해 replace 함수를 사용할 수 있는데요, replace 함수는 특정 문자를 다른 문자 또는 공백으로 대체하는 기능을 한답니다. 따라서 '\n' 라는 글자를 아무 문자가 들어있지 않은 ""(공백) 으로 바꾼다면 해당 문자가 삭제되는 것과 같아지게 됩니다. replace() 함수는 replace("바꾸기 전 문자", "바꾼 후의 문자") 로 코드를 작성하면 되는데요, 아래와 같이 '\n' 이 포함된 문자열 str1이 있다고 가정할 때, replace를 이용하.. 더보기
[웹크롤링] 크롤링 수행 시간 측정하기 - time 크롤링을 수행하는데 걸린 시간을 측정하고 싶다면, time 라이브러리를 사용하여 쉽게 측정할 수 있답니다. 아래 코드를 보면서 살펴보도록 하겠습니다. - time() : 시간 측정하기 time 라이브러리에서 제공하는 time() 모듈은 현재 시간을 나타내는 기능을 하는데요, 크롤링을 하기 전에 시간을 측정하고, 크롤링이 끝났을 때 시간을 측정해 두 시간의 차이를 구하면 얼마나 걸렸는지 알 수 있습니다. 따라서 아래 코드처럼 코드를 입력하면 됩니다. import time start_time = time.time() #시작 시간 # 크롤링 수행 코드 end_time = time.time() #종료 시간 total_time = end_time - start_time #걸린시간 print(total_time) .. 더보기
[웹크롤링] 이미지 크롤링해서 저장하는 방법 - urlib 이미지를 크롤링해서 저장하고 싶다면 urlib 이라는 라이브러리를 통해 이미지를 저장할 수 있습니다. 한편, 이미지는 주로 'src' 태그에 'https://링크~.jpg' 이런 식으로 텍스트로 되어 있는데요, 이 텍스트를 가져온 다음, urlib를 이용하여 폴더에 저장하면 된답니다. 그렇다면, 예시로, 네이버 웹툰 홈페이지에서 아래 이미지와 같이 웹툰의 섬네일을 저장하는 방법에 대해서 살펴보겠습니다. 1. 월요웹툰 페이지 본문 가져오기 이미지를 저장하기 앞서, 먼저 월요웹툰 페이지를 열고, 해당 페이지의 본문을 가져오는 코드를 작성하도록 하겠습니다. from bs4 import BeautifulSoup import requests import urllib.request import urllib url .. 더보기
[웹크롤링] 네이버 - 연관 검색어 크롤링하기 (requests 사용) 네이버에서 원하는 검색어를 입력하면 아래 이미지처럼 홈페이지 맨 하단에 연관 검색어가 나오는데요, 이 연관 검색어를 크롤링해서 저장하는 방법에 대해서 살펴보도록 하겠습니다. (requests를 사용한다는 가정하에 설명드리겠습니다. 크롬 드라이버를 사용한 방법은 다음 글에서 설명드리겠습니다.) 1. 필요한 라이브러리 import 하기 from bs4 import BeautifulSoup import requests 필요한 라이브러리로 BeautifulSoup, requests를 import 해주었습니다. 2. 키워드 입력받고 url, params 설정하기 keyword = input("연관검색어를 찾을 키워드를 입력하세요 : ") url = "https://search.naver.com/search.nav.. 더보기