728x90
반응형
파이썬에서 MongoDB에 리스트를 삽입하는 방법은 다음과 같습니다.
1. pymongo 라이브러리 설치
pymongo는 파이썬에서 MongoDB를 다루는 데 사용되는 공식 MongoDB 드라이버입니다. 설치는 pip 명령어를 사용하여 다음과 같이 수행할 수 있습니다.
pip install pymongo
2. MongoDB 관련 클래스를 만듭니다.
from pymongo import MongoClient
class MongoDB:
def __init__(self):
# MongoDB에 연결
self.client = MongoClient('localhost', 27017)
# 데이터베이스 선택 (없는 경우 자동으로 생성됨)
self.db = self.client['test']
# 컬렉션 선택 (없는 경우 자동으로 생성됨)
self.collection = self.db['c1']
def insertMany(self, documents): #리스트
print(documents)
result = self.collection.insert_many(documents)
# 삽입 결과 확인
if result.acknowledged:
print("Documents inserted successfully!")
print("Inserted IDs:", result.inserted_ids)
else:
print("Failed to insert documents.")
def insertOne(self, itm): #객체
self.collection.insert_one(itm)
def selectOne(self, id): #객체
self.collection.find_one(id)
def selectList(self, condition=None): #객체(조건)
if condition is None:
self.collection.find()
else:
self.collection.find(condition)
def selectAll(self):
self.collection.find()
위와 같이 클래스를 작성하고 셀레니움을 작성한 코드에서는 다음과 같이 불러올 수 있습니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import re
from mongo import MongoDB
#DB 연결
db = MongoDB()
# 웹 드라이버 설정
driver = webdriver.Chrome()
urls = ['http://example.com/a', 'http://example.com/b']
for url in urls:
driver.get(url)
# 특정 클래스가 로드될 때까지 기다리기
wait = WebDriverWait(driver, 10) # 최대 10초 동안 기다림
if re.search('a', url):
site = 'a'
class_name = "c1" # 기다릴 클래스 이름
title_selector = '.title1'
reg_selector = '.reg1'
elif re.search('b', url):
site = 'b'
class_name = "c2"
title_selector = '.title2'
reg_selector = '.reg2'
wrap = wait.until(EC.presence_of_element_located((By.CLASS_NAME, class_name)))
# 리스트 찾기
sth_list = wrap.find_elements(By.TAG_NAME,'li')
element = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, title_selector)))
ele_list = []
if element:
for ticket in ticket_list:
ele = {}
ele['site'] = site
ele['title'] = ticket.find_element(By.CSS_SELECTOR, title_selector).text
ele['reg_date'] = ticket.find_element(By.CSS_SELECTOR, reg_selector).text
ele_list.append(ele)
# insert 함수 호출
db.insertMany(ele_list)
ele_list = []
# 웹 드라이버 종료
driver.quit()
위에서 작성한 클래스를 import 합니다.
from mongo import MongoDB
클래스를 호출하여 collection과 연결합니다.
db = MongoDB()
저장할 데이터를 list에 저장한 뒤 collection에 insert합니다.
db.insertMany(ele_list)
728x90
반응형
'공부기록 > 파이썬' 카테고리의 다른 글
[Python + Flask + MongoDB] REST API 구축하기 (0) | 2023.07.03 |
---|---|
Python 기반 웹 프레임워크 Flask와 Django 비교 (0) | 2023.07.02 |
Python + Selenium 도메인 여러 개 크롤링하기 (0) | 2023.06.30 |
Python + Selenium 특정 요소가 로드된 후 원하는 데이터 가지고 오기(선택자 종류 소개) (1) | 2023.06.30 |
Python + Selenium으로 크롤링 시작하기(예제 있음) (0) | 2023.06.29 |