우선 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/Desktop/chromedriver'
driver = webdriver.Chrome(chrome_driver)
driver 객체는 chrome를 다루는 webdriver로 chrome_driver를 사용할 것이다.
크롤링해 볼 사이트인 다음뉴스의 웹사이트 주소를 url에 객체화해주자.
url = 'https://news.v.daum.net/v/20190728165812603'
webdriver에 해당 url을 get함수를 사용해 요청한다.
driver.get(url)
src = driver.page_source
webdriver.Chrome에는 page_source라는 속성이 있다. 이것 또한 tap키를 누르면 다양한 종류를 확인할 수 있음. page_source로 가져온 html을 BeautifulSoup으로 변환해주자. print(soup)
soup = BeautifulSoup(src)
print(soup)
크롤링에 성공했다.
이제 크롤링한 html코드에서 댓글에 대한 count만을 추출해보자.
일단 댓글 숫자가 어느 태그에 위치하는 지 확인해보자.
span tag에 num_cmt class에 있다.
💡 html tag의 class에서 공백이 있으면 class가 2개 이상인 것이다. 즉, commentscount는 span tag에 num_cmt, alex-count-area class에 있다!
tag값과 class값을 알게 됐으니 이제 find, find_all, select, select_one 함수를 사용해서 태그를 찾아보자. 단일값인 것을 알고 있으니 find나 select_one을 쓰면 좋을 것이다. 난 select_one를 사용하겠다.
soup.select_one('span.num_cmt')
결과는 select_one을 사용했기 때문에 단일값의 tag형태의 str이 반환된다.
그리고 이 태그에서 텍스트만을 추출해보자.
soup.select_one('span.num_cmt').text
soup.select_one('spna.num_cmt').get_text()
끝!
'python > data crawling' 카테고리의 다른 글
9. find_all 과 find의 차이점 (0) | 2023.02.15 |
---|---|
8. selenium (3) - webdriverWait (0) | 2023.02.15 |
6. selenium 모듈 (1) (0) | 2023.02.14 |
사이트에서 가격 정보 data crawling (0) | 2023.02.14 |
정규표현식으로 tag 찾기 & 정규표현식 정리 (0) | 2023.02.14 |