강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

sbsys46님의 프로필 이미지
sbsys46

작성한 질문수

남박사의 파이썬으로 실전 웹사이트 만들기

google.py 몽고db 샘플데이터 만들기

해결된 질문

작성

·

54

0

[남박사의 파이썬으로 실전 웹사이트 만들기] 강좌를

수강중 입니다.

강좌내용대로 코딩후 실행해봐도 db 생성이 안되어 강좌의 이후단계로 진입을 못하고 있습니다.

샘플데이터가 탑재된 db 를 다운받을 방법이 없을까요?

답변 2

0

남박사님의 프로필 이미지
남박사
지식공유자

몽고 db의 파일은 복사해서 전송해드리는게 간단한 문제가 아닙니다. 일단 그 전에 왜 DB가 생성이 안되는지 부터 점검을 해보셔야 할 듯 합니다. db 생성이 어떤 이유에서 안된다면 차후 강의 진행에 계속 문제가 될 수 있는 여지가 너무 많고 dump를 떠서 복사한들 그 역시 복원 안될 확률이 너무 큽니다.

강의의 어떤 부분을 진행했고, 어떻게 실행했으며, 그 결과로 어떤 오류가 발생했는지 좀 더 상세히 말씀주시고 화면스샷도 주신다면 제가 문제점을 추측해보는데 많은 도움이 될 듯 합니다.

번거로우시겠지만 그렇게 일단 해결부터 하고 진행하시는게 좋을듯 합니다. 아니면 요즘은 AI 성능이 월등히 좋기 때문에 문제가 되는 증상이나 화면 스샷을 챗GPT나 클로드, 제미나 같은 AI 한테 질문을 해도 생각보다 좋은 답변을 얻으실 수도 있으니 그 부분도 참고하시기 바랍니다.

sbsys46님의 프로필 이미지
sbsys46
질문자

for i in range(6):
	# 구글 검색 URL, 검색어는 파이썬
    url = "https://www.google.com/search?q={}&start={}".format("파이썬", i * 10)
    # url 접속
    r = requests.get(url, headers=header)
    
    # 웹페이지의 검색 결과를 파싱하기 위한 준비
    # lxml 라이브러리 사용(설치 요망)
    bs = BeautifulSoup(r.text, "lxml")

    # 검색 결과는 div 태그의 mnr-c.xpd 클래스 단위로 반복됨
    lists = bs.select("div.MjjYud")  # qGXjvb") # mnr-c.xpd")

    print(lists)

이부분에서 lists 에 아무런 데이터가 들어오지 않는 문제 입니다.

나름대로 검색결과 이후의 모든 div class 명을 대입해 보았으나 효과가
없었습니다.

물론 크롤링 지식이 부족하여 해결못하는 부분이긴하지만 원하는 바는 크롤링
기법을 알려달라는것이 아닌 강좌를 지속적으로 수강할수 있도록 해주기를
바라는것 입니다.

예를 들어 번거로우시겠지만
1. 최근 구글검색창에서 bs.select("div.MjjYud")에 적용된 키워드를 찾아 
   주시는것
2. 아니면 강사님 께서 구축해노신 몽고디비의 레코드를 import 가능한 
   문서로 export 하시어 download 가능케 해주시는 방법은 없을 런지요?

전혀 무리한 부탁이라면 임의로 db 구성해서 수강 이어가도록 하겠습니다 만
가급적 긍정적인 회신 기대 하겠습니다.
남박사님의 프로필 이미지
남박사
지식공유자

아! 지금 구글 검색이 막혀서 검색 결과를 얻지 못해서 생기는 문제셨군요. 현재 구글의 내부적으로 업데이트 되며 이전 방식의 크롤링 코드가 동작하지 않고 있습니다만 그 문제라면 다음의 코드로 수정해서 테스트 해보시기 바랍니다.

 

# 먼저 아래의 외부 라이브러리를 설치해야 합니다.
# 터미널에서 다음 명령어를 실행해 googlesearch-python 라이브러리를 설치하세요.
# 만약 이전에 설치한 경우 업그레이드를 하셔야 합니다.
# pip install --upgrade googlesearch-python

from googlesearch import search

query = "파이썬 강좌"
for r in search(query, num_results=10, advanced=True):
    title = r.title
    contents = r.description
    url = r.url
    print(f"Title: {title}")
    print(f"Contents: {contents}")
    print(f"URL: {url}")
    print("-" * 40)

위의 코드는 googlesearch-python 라이브러리를 먼저 설치 해야 합니다.

 

pip install --upgrade googlesearch-python

이전 버전이 설치 되어있더라도 pip 명령을 통해 반드시 업그레이드 하셔야 합니다.

 

image.png

코드를 실행하면 그림과 같이 정상적으로 데이터를 가져오는 것을 확인 할 수 있습니다. 해당 코드는 강의 자료에도 적용시켜 놓도록 하겠습니다.

더 궁금하신 사항 있으시면 또 질문 주시기 바랍니다.

sbsys46님의 프로필 이미지
sbsys46
질문자

아주 잘작동되는걸 확인 했습니다.

코드정비후 수강 이어 가겠습니다.

노고에 감사 드립니다.

남박사님의 프로필 이미지
남박사
지식공유자

넵! 잘 작동되셨다니 다행입니다~

또 궁금하신 사항 있으시면 질문 주시기 바랍니다.

sbsys46님의 프로필 이미지
sbsys46
질문자

from pymongo import MongoClient
from datetime import datetime,timezone
import random
from googlesearch import search

# 몽고DB
client = MongoClient(host="localhost", port=27017)
db = client.myweb
col = db.board
query = "파이썬 강좌"

# 게시물 작성시간 기록을 위해 현재시간 저장 (utc 타임)
current_utc_time=round(datetime.now(timezone.utc).timestamp()*1000)
for r in search(query, num_results=50, advanced=True):
    title = r.title
    contents = r.description
    url = r.url
   
    try:
        # 몽고DB에 저장py 
        # 작성자와 writer_id 설정 필요
        col.insert_one({
            "name": "테스터",
            "writer_id": f"wid-00{random.randint(111,999)}",
            "title": title,
            "contents": contents,
            "url":url,
            "view": random.randrange(1, 99),
            "pubdate": current_utc_time
        })
    except:
        pass

수정된 소스 올려봅니다.
db 생성 확인도 마쳤습니다.
남박사님의 프로필 이미지
남박사
지식공유자

강좌 내용을 응용해서 살짝 바꾸셔서 진행하는 방식은 참 좋은 공부법이라 생각합니다. 화이팅 입니다~!

0

안녕하세요, 인프런 AI 인턴입니다. sbsys46님.

몽고DB에 데이터를 삽입하는 과정에서 문제가 발생한 것 같습니다. 이런 경우 기본적인 DB 연결 설정이나 데이터 삽입 코드에 문제가 있을 가능성이 높습니다. 하지만 데이터가 없는 상태에서 이후 강의로 진행하기 어려움을 겪고 계신다면, 다음의 정보를 확인해 보시면 도움이 될 수 있습니다.

가능성 있는 문제와 해결 방안

  1. DB 연결 확인: MongoDB 서버와 연결이 잘 되어 있는지 확인해야 합니다. 보통 MongoClient 설정에서 localhost와 포트 번호가 올바른지 확인해보세요.

  2. 데이터 삽입 코드 검토: 데이터 삽입 코드를 다시 한 번 점검해 보세요. 기존에 insert() 대신 insert_one() 또는 insert_many() 메소드로 변경해야 할 경우가 있습니다.

  3. 구현 예시

    • 아래는 간단한 데이터를 insert하는 예시 코드입니다:
      ”`python
      from pymongo import MongoClient

    client = MongoClient(“mongodb://localhost:27017/”)
    db = client[“sample_db”]
    collection = db[“sample_collection”]

    sample_data = {“name”: “테스트”, “title”: “샘플 제목”, “content”: “이것은 샘플 데이터입니다.”}
    collection.insert_one(sample_data)
    “`

만약 코드상의 문제가 아닌 다른 부분에서 어려움이 있으시다면, 강의 내 질문 게시판에서 더 구체적인 코드를 제공하시거나 강사님께 추가적인 도움을 요청하시는 것도 좋습니다.

또한, google.py에 대한 구체적인 코드 변경이 필요하다면, 이미 맞닥뜨린 문제와 해결책이 있는 경우 참고하실 수 있도록 질문 게시판 링크를 공유드립니다:
- google.py 작성 후 board db에 데이터가 안 생깁니다.
- google.py 데이터가 안생깁니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

sbsys46님의 프로필 이미지
sbsys46

작성한 질문수

질문하기