본문 바로가기

python

[웹크롤링] 쿠팡 사이트 크롤링 - 오류 없이 접속하는 방법 (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] 이 출력되어야 하는데요, 위 코드와 같이 쿠팡 주소를 입력한 뒤 접속을 하면 반환값이 출력되지 않고 무한로딩이 됩.. 더보기
[웹크롤링] Response [406] : 에러 발생 이유 & 해결 방법 - 헤더값 설정 1. Response [406] : 에러 발생 이유 웹 크롤링을 할 때, 처음 코드에 url을 입력하고, requests.get(url) 함수를 통해 정상적으로 접속이 되는지 확인을 하는데요, 정상적으로 접속이 되었다면 Response [200] 이라는 코드가 출력됩니다. 아래 코드는 예시로 네이버 홈페이지에 접속하는 코드인데요, from bs4 import BeautifulSoup import requests url = "https://www.naver.com" resp = requests.get(url) print(resp) #output : requests.get() 함수에 url을 입력하고, 반환된 값을 출력해보면 Response [200] 으로 정상적으로 접속이 된 것을 확인할 수 있습니다. 하.. 더보기
[웹크롤링] 해당 페이지 캡처(screen shot)하기 - pyautogui 웹 페이지를 크롤링할 때, 페이지를 캡처하는 것도 하나의 데이터가 될 수 있는데요, 화면을 캡처하고 싶다면 'pyautogui' 라는 라이브러리를 사용하면 됩니다. pyautogui 라이브러리는 cmd창에 pip install pyautogui 를 입력하면 설치가 됩니다. 한번 예시로, 네이버 홈페이지를 열고, 해당 화면을 캡처하는 코드를 살펴보겠습니다. 먼저, 아래 코드는 selenium과 크롬 드라이버를 이용하여 네이버 홈페이지를 여는 코드입니다. from bs4 import BeautifulSoup from selenium import webdriver import time path = "c:/temp/chromedriver_240/chromedriver.exe" #chomedriver의 경로 dr.. 더보기
[웹크롤링] 검색창에 입력된 텍스트 지우는 방법 - clear() 만약 검색창이 있는 페이지 또는 쇼핑몰 사이트에서 원하는 검색어를 입력한 뒤, 해당 페이지를 크롤링할 때, 검색창에 텍스트를 입력해야 합니다. 하지만 여러 키워드로 검색을 할 때, 기존의 키워드를 지워야 하는데요, 이때 검색창에서 텍스트를 지우는 방법에 대해서 알아보도록 하겠습니다. 예시로, 네이버 홈페이지에 '여행'이라는 검색어를 입력하는 코드를 작성해보겠습니다. (selenium과 크롬 드라이버를 사용한다는 가정하에 설명드리겠습니다.) from bs4 import BeautifulSoup from selenium import webdriver import time path = "c:/temp/chromedriver_240/chromedriver.exe" #chomedriver의 경로 driver = .. 더보기
[웹크롤링] 에러가 나는 경우 try / except 문으로 해결하기 웹 페이지를 크롤링할 때, 예를 들어, 텍스트를 추출하는데, 특정 부분에 텍스트가 없다면 에러가 날 수 있습니다. 또는 이미지를 크롤링하기 위해 이미지의 url을 크롤링하는데, 만약 url이 없는 이미지라면 에러가 날 수 있습니다. 이러한 경우 모두 try / except 문으로 코드를 작성하면 해결할 수 있는데요, try 문은 실행 코드를 입력하고 에러가 발생했을 때 멈추지 않고 다른 코드를 수행하도록 할 수 있습니다. 사용방법은 다음과 같습니다. try : 에러가 날 수 있는 코드 except 에러이름 : 에러 발생 시 명령할 코드 else : 에러가 발생하지 않을 때 실행할 코드 한편, 위 코드에서, 에러 이름을 공백으로 두면, 모든 에러에 대해 처리됩니다. 그렇다면, 코드로 어떻게 작성해야 하는지.. 더보기
[데이터분석] 여러 리스트로 데이터 프레임 만들고 엑셀(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를 이용하.. 더보기
[웹크롤링] 이모티콘, 텍스트나 이미지로 변경해서 크롤링 하는 방법 웹 크롤링을 할 때, 이모티콘의 경우 텍스트로 인식이 되지 않아서 오류가 발생하기도 하는데요, 이러한 경우엔 이모티콘을 다른 글자나 이미지로 변경해서 저장하도록 하는 코드를 작성해야 합니다. 그렇다면 아이콘이나 이모티콘을 글자로 변경하는 코드에 대해서 알아보도록 하겠습니다. - 이모티콘, 텍스트나 이미지로 변경하기 먼저 코드부터 보도록 하겠습니다. bmp_map = dict.fromkeys(range0x1000,sys.maxunicode + 1), 0xfffd) try : title = li.find('div',textcontents) except AttributeError : print(title.replace("\n","") else : title2 = title1.transiate(bmp_map)... 더보기
[웹크롤링] 텍스트 입력 시 글자가 생략되거나 오타가 나는 문제, 해결 방법은? 크롤링할 때, 예를 들어 검색창에 지정된 텍스트를 입력하도록 할 때, 입력 속도가 너무 빨라서 그런지 중간에 오타가 나거나 글자가 생략되는 경우가 있을 수 있습니다. 예를 들어, 아래는 네이버 검색창에 "안녕하세요! 디노랩스 블로그입니다. 언제든지 방문해주세요:D" 라는 텍스트를 작성하는 코드인데요, from bs4 import BeautifulSoup from selenium import webdriver import time path = "c:/temp/chromedriver_240/chromedriver.exe" ###chomedriver의 경로 위치 driver = webdriver.Chrome(path) driver.get("http://naver.com") time.sleep(2) # 2초기달.. 더보기