본문 바로가기

크롤링

[웹크롤링] 자바스크립트로 이루어진 페이지와 html로 이루어진 페이지를 크롤링 하는 코드가 다른가요? 1. html로 이루어진 페이지 html로 이루어진 페이지를 크롤링하는 것은 자바스크립트로 이루어진 페이지를 크롤링하는 것과 다르게 코드를 작성해야 하는지 궁금하실 수 있는데요, html로 이루어진 페이지와 자바스크립트로 이루어진 페이지를 크롤링하는 방법은 약간 다르답니다! html로 이루어진 경우 간단하게 url을 찾고 BeautifulSoup()를 이용하여 본문을 가져오면 되는데요, 기본적으로 다음과 같이 코드를 입력하면 됩니다. from bs4 import BeautifulSoup import requests url = "https://www.naver.com/" resp = requests.get(url,params) soup = BeautifulSoup(resp.content, 'lxml') 2.. 더보기
[웹크롤링] 자바 스크립트로 이루어진 페이지, json 형식으로 불러오는 방법은? 동적 페이지와 같이 자바스크립트로 이루어진 페이지를 json으로 불러온 뒤, 크롤링을 해야 경우가 있을 수 있는데요, 이러한 경우 어떻게 해야 할까요? 우선, 자바스크립트로 이루어진 페이지의 url을 찾아야 합니다. 이전 글에서 자바스크립트로 이루어진 페이지의 url을 찾는 방법에 대해 살펴보았는데요, 다시 간단하게 설명하자면, F12를 누른 뒤 [Network] 탭에서 "XHR", 또는 "JS" 버튼을 누르며 보이는 항목들을 클릭하면 됩니다. 그리고, 항목들을 미리보기(Preview) 하면서 해당되는 영역이 맞다면 "Headers" 에서 Request URL 부분을 복사하면 됩니다. 아래 이미지처럼 URL을 찾아서 복사하면 됩니다. 그리고나서, 아래와 같이 코드를 작성했다고 가정할 때, url = "자.. 더보기
[웹크롤링] 자바스크립트 페이지의 url 찾는 방법 자바스크립트로 이루어진 페이지 또는 영역을 크롤링하려면, 해당 페이지의 url을 알아야 하는데요, 자바스크립트 페이지의 url을 알아내는 방법은 F12를 누른 뒤 [Network] 탭에서 "XHR" 또는 "JS" 버튼을 누르며 보이는 항목들을 클릭해보면서 찾아야 합니다. 아래 페이지는 네이버 금융 페이지에서, [Network] 탭의 "XHR" 을 눌렀을 때 보이는 화면입니다. 아래 각 항목을 누르면 어느 영역을 나타내는 항목인지 가늠할 수 있는데요, 원하는 항목을 찾으면 오른쪽 "Headers"에서 "Request URL" 부분을 복사하면 됩니다. 한 URL 을 골라서 주소창에 입력해본 결과 아래와 같은 페이지를 확인할 수 있습니다. 따라서 이와 같이 해당 url을 찾으면 이제 이 url을 자신의 코드에.. 더보기
[웹크롤링] '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] 이 출력되어야 하는데요, 위 코드와 같이 쿠팡 주소를 입력한 뒤 접속을 하면 반환값이 출력되지 않고 무한로딩이 됩.. 더보기
[웹크롤링] 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 = .. 더보기