import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from googletrans import Translator
from pymongo import MongoClient
# BeautifulSoup
# URL을 읽어서 HTML 받아오고, HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
url = "http://iteslj.org/questions/"
result = requests.get(url)
bs_obj = BeautifulSoup(result.content, "html.parser")
# 첫 페이지에서 a 태그로 각 서브페이지의 href 찾기
q_packages = bs_obj.find("tr")
q_packages_html = q_packages.findAll("a")
# googletrans
translator = Translator()
# pymongo
client = MongoClient('localhost', 27017)
db = client.dbbbackco
for q_html in q_packages_html:
# selenium
# 서브페이지의 href와 앞의 주소를 붙여 각 서브페이지 링크 연결
driver = webdriver.Chrome('chromedriver') # 웹드라이버 파일의 경로
driver.get("http://iteslj.org/questions/" + q_html['href'])
# BeautifulSoup
html = driver.page_source # 페이지의 elements 모두 가져오기
soup = BeautifulSoup(html, 'html.parser') # BeautifulSoup 사용하기
notices = soup.select('#bd > div.main.wide > ul > li')
for n in notices:
questions = n.text.strip()
q_korean = translator.translate(questions, dest="ko")
doc = {'question': q_korean.text}
db.questions_ko.insert_one(doc)
# print(q_korean.text)
# Selenium driver 창 닫기
driver.quit()
사이트에서 크롤링 - 구글 번역 api 이용해서 한국어로 돌리기 - pymongo 이용해서 mongodb에 저장
bs4, selenium, googletrans, pymongo 이용
주의
pymongo는 명령 프롬프트(cmd) 사용해서 mongod 명령어로 작동시킨 뒤에
http://localhost:27017/ 이용해서 제대로 작동되고 있는지 확인 후 사용!!(ㅠㅠ)
그래야 잘 연결되어 db에 문제없이 저장된다! 연결 끊기면 오류 발생한다.
참고 사이트
https://www.notion.so/1-e7183b041f7f4a17be0d9b27f053d02b
05. 이미지 웹 스크래핑(크롤링) 하기
- bs4와 selenium 동시 사용하는 데에 도움.
https://beomi.github.io/gb-crawling/posts/2017-02-27-HowToMakeWebCrawler-With-Selenium.html
- bs4와 selenium 동시 사용하는 데에 도움.
https://www.youtube.com/watch?v=EH50a7UrUfw
링크 안에 링크 크롤링하기
- bs4와 requests 이용
https://blockdmask.tistory.com/540
- 구글 api 이용
https://workingwithpython.com/howtouseselenium-3/
(참고) 튜터님이 알려주신 셀레니움 xpath
but 실제로는 이용하지 않음.
'Project > 2' 카테고리의 다른 글
GET과 POST를 이용해서 랜덤 질문 추출 기능 구현 (0) | 2021.10.06 |
---|---|
내일배움단 15일 프로젝트 13일차 개발일지 (0) | 2021.10.06 |
내일배움단 15일 프로젝트 8-12일차 개발일지 (0) | 2021.10.04 |
<meta charset="utf-8"> 입력 (0) | 2021.09.30 |
내일배움단 15일 프로젝트 3-7일자 개발일지 (0) | 2021.09.30 |