find_all 은 list 형식안에 tag들을 뽑아낸다. 때문에 find_all로 반환된 리스트를 get_text로 text만 뽑아내기 위해서는 for문을 돌려야한다. 우선, 인터넷 기사의 html문을 불러와서, BeautifulSoup으로 보기좋게 만들었다. 내가 찾고 싶은 것은 인터넷 기사에 달린 ‘댓글의 수’이다. 댓글은 span tag에 num_cmt 어쩌구 에 들어가있는 것을 확인할 수 있다. find함수를 써서 count를 뽑아보겠다. count = soup.find('span', class_ = 'num_cmt alex-count-area') 결과는 tag로 나온다. 이 tag값에서 text를 빼내는 함수는 get.text()이다. .text도 됨 count.get_text() #or co..
selenium을 활용하여 특정 element의 로딩을 기다리고 데이터를 크롤링해보자 element의 로딩을 기다린다는 말은 예를 들어 페이지가 완전히 Load되고 나서 정보를 긁어오고 싶을 때를 말한다. ex) 뉴스의 댓글 수는 처음 페이지 요청시에 곧바로 불러지지 않는다. 이런 경우 로딩을 완전히 기다리고 데이터를 크롤링하는 방법을 사용해야 할 수 있다. 네이버 기사의 댓글 수를 추출해보겠다. 우선 네이버 기사의 html 문서를 크롤링해보자 chorme_drvier = '/Users/choehyeogjae/Desktop/chromedriver' driver = webdriver.Chrome(chrome_drvier) url = 'https://n.news.naver.com/mnews/article/0..
우선 selenium webdriver ,BeautifulSoup 을 불러주고, chromedriver의 경로를 지정해주자. from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from bs4 import BeautifulSoup import time chrome_driver = '/Users/choehyeogjae/Deskt..
selenium 모듈은 크롤링의 끝판왕이라는 말이 있다. requests 와 beautifulSoup 모듈 조합으로 크롤링에 실패한 경험이 있을 때 selenium을 사용하면 거의 100퍼센트 크롤링에 성공할 수 있다. 1. selenium으로 크롬 검색 프로그램 만들기 (with. chrome driver ) 우선 사용할 패키지와 모듈을 불러보자. 꽤 많다. 외운다기보단 필요할 때마다 복사해서 쓰는 게 좋겠다. from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.suppor..
큐스터디라는 사이트에서 로그인한 상태에서의 전공임용수학 과목의 가격을 크롤링해보자 우선 사이트에서 개발자 도구를 열어 Network에서 로그인을 위해 post한 값을 찾는다. 내가 입력한 id, pw 값과 주소가 나타난다. (보라색) import requests # requests 패키지를 불러주고 url = 'https://qstudy.kr/module/login/loginProc.php' data = {'stw_top_id' : 나의 아이디, 'stw_top_pw' : 나의 비밀번호} url 주소는 로그인 후 나타나는 Network의 hearders에서 General 부분에 Requests URL을 보면 확인할 수 있다. 이제 여기서부터가 중요함. 우리는 전에 url에서 로그인할 때 requests...
import re soup.find_all(re.compile('h\d') # h라는 문자 뒤에 어떤 숫자 하나 compile함수를 사용하기 위해서는 re 모듈을 불러와야한다. soup.find_all('img', attrs = {'src' : re.compile('.+\.jpg')}) 'img' tag, attrs인 것 모두 찾기 soup.find_all('h3', class_ = 'tit_view') soup.find_all('h3', class_ = re.compile('.+view$') h3 tag에 class명 'tit_view인 모든 것 찾기 h3 tag에 class명 . + view로 끝나는 모든 것 찾기
1. select, select_one 함수 사용법 select : 만족하는 조건의 모든 elements를 찾는다. (리스트처럼 만들어준다.) select_one : 만족하는 조건의 첫번째 elements를 찾는다. (단일 결과물은 str type으로 반환) - css selector 사용법 태그명 찾기 tag 자손 태그 찾기 - 자손 관계 (tag tag) 자식 태그 찾기 - 다이렉트 자식 관계 (tag > tag) 아이디 찾기 #id 클래스 찾기 .class 속성값 찾기 [name = ‘test’] 속성값 prefix 찾기 [name ^=’test’] 속성값 suffix 찾기 [name $=’test’] 속성값 substring 찾기 [name *=’test’] n번째 자식 tag 찾기 :nth-ch..
1. beautiful 모듈 BeautifulSoup이란 스크래핑을 하기위해 사용하는 패키이다. 즉, BeautifulSoup은 response.text를 통해 가져온 HTML 문서를 탐색해서 원하는 부분을 뽑아내는 역할을 하는 라이브러리이다. response.text로 가져온 HTML문서는 단순히 string에 지나지 않으니, 의미있는(?) 분석에 용이한 HTML문서로 변환이 필요하다. 결론적으로, response.text로 가져온 string type의 HTML문서를 BeautifulSoup을 이용해 원하는 부분을 탐색할 수 있게 된다. 이제 beautiful 모듈을 사용해보자. from bs4 import BeautifulSoup beautifulsoup을 사용하기 전 html 문자열 파싱에 대해서..