inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

게시판만들기 - 글 리스트

google.py 작성 후 board db에 데이터가 안 생깁니다.

420

형욱박

작성한 질문수 31

1

맥북 카탈리나를 사용하고 있고 db admin에 id/pw가 설정되어 있어 아래와 같이 google.py를 작성했습니다. 

import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
from datetime import datetime

client = MongoClient("mongodb://joseph:0430@localhost:27017/admin") #flask pymongo가 아니라 pymongo를 직접 사용 host="localhost", port=27017
db = client.myweb
col = db.board # 이렇게 db에 접근을 한다.

header = {"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Mobile Safari/537.36"}
for i in range(5): #5페이지 정도 결과 반복
url = "https://www.google.com/search?q={}&start={}".format("파이썬", i * 10) # 문자열을 포매팅, 검색어와 페이징을 가져옴
r = requests.get(url, headers=header)
bs = BeautifulSoup(r.text, "lxml")
lists = bs.select("div.g")

for l in lists:
current_utc_time = round(datetime.utcnow().timestamp() * 1000)

try:
title = l.select_one("h3.LC20lb").text
contents = l.select_one("div.s").text
col.insert_one({
"name": "테스트",
"title": title,
"contents": contents,
"view": 0,
"pupdate": current_utc_time
})
except:
pass

이렇게 하니 아래처럼 DB에 데이터가 쌓이지 않아 문의 드립니다. 

왜 데이터가 들어가지 않을까요?? 

client = MongoClient("mongodb://joseph:0430@localhost:27017/admin")

이걸 MongoClient(host="localhost", port=27017) 이렇게 해도 안됩니다...ㅜㅜ

알려주세요~!!

python

답변 4

4

hyunbaek1159

혹시 다른 분들도 같은 현상을 겪으실까봐 댓글남깁니다.
저의 경우에는
try:
    title = l.select_one(이부분).text
    contents = l.select_one(이부분).text
에서 이부분(클래스이름)이 실제 구글 f12(검사)에서 보이는 클래스 이름과 달라서 데이터를 못찾아 쌓이지 않았습니다.

영상을 만들 당시와 제가 공부하던 시기가 달라 영상과 그대로 적용해서는 안되었던 것 같습니다.
ps. title = l.select_one("h3.LC20lb.DKV0Md").text
div 사이에 . 을 꼭 넣어주셔야 합니다.
LC20lb.DKV0Md

0

jerpi94

12.28일 추가합니다

h3.LC20lb.DKV0Md 하위에 span이 존재하여 

("h3.LC20lb.DKV0Md > span") 로 하위 텍스트를 읽어야 DB에 저장됩니다.

0

hathor2k

hyunbaek1159님 의견에 더하여,
contents = l.select_one("div.IsZvec").text
<- content도 바뀐듯 합니다.

0

남박사

일단 try except 를 제거하고 어떤 오류가 나는지 확인해보시기 바랍니다. try 문은 코드가 100% 확실할때 사용하는걸 추천합니다.  그리고 코드를 단순화 하여 접속 후 아무 기능없이 그냥 아무 데이터나 db.insert 되는지 먼저 확인해보시는게 좋습니다. 이런식으로 코드를 단순화해서 어디서 어떤 문제가 발생하는지를 유추하실 수 있어야 차후에 코드가 커졌을때도 오류를 찾아낼 수 있습니다.

import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
from datetime import datetime

client = MongoClient("mongodb://joseph:0430@localhost:27017/admin") #flask pymongo가 아니라 pymongo를 직접 사용 host="localhost", port=27017
db = client.myweb
col = db.board # 이렇게 db에 접근을 한다. 
col.insert_one({
	"name": "테스트"
})

이런식으로 코드를 최소화하여 데이터가 정상적으로 저장되는지부터 확인해보셔야 할듯 합니다. 그리고 인증의 문제라면 파이몽고 버전에 따라 db에 아이디 비번이 걸렸을시 동작하는게 좀 달랐던 기억이 있습니다. authenticate() 함수를 사용한적도 있고.. 구글링을 하여 여러가지 테스트를 해보셔야 할듯 합니다.

iis 접속후 자동으로 로그인 창이 나오도록 설정이 기능한가요?

0

63

2

리스트 이동 시 창 에러 발생

0

73

1

배포후 회원 등록 후 로그인 에러...

0

72

2

내부 서버 오류

0

65

2

app.config["MONGO_URI"] = "mongodb://localhost:27017/pm_db"

0

53

2

DB 검색하면 데이터가 없습니다. 라고 나와요. 5시간을 찾아봐도 모르겠어서 문의드려봅니다.

0

44

1

몽고db studio3T를 깔았는데

0

56

2

flake8과 linter

0

71

3

500이 뜹니다.

0

57

2

첨부파일 삭제

0

66

2

검색기능 질문

0

61

2

google.py

0

66

2

Studio 3T에 DB insert가 되지 않는 문제를 해결하지 못하고 있습니다 ㅠ

0

81

3

혹시 전체 코드 공개되어 있나요?

0

95

1

join.html 의 form 태그값 을 member_join() 에서 처리못함.

0

102

1

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

0

99

2

flake8 설치 이후 명령팔레트에서 linter가 안보입니다.

0

236

2

파이썬으로 만들어서 웹호스팅에 올릴경우

0

303

1

현재 구글검색 무한스크롤변경 문의합니다

0

295

1

몽고디비아틀라스로 추가 공부해서 올립니다.

0

216

1

IIS 500.19에러

0

652

2

버전 문제도 수정했는데 결과가 안나옵니다.

0

255

1

데이터베이스 저장관련 질문입니다.

0

266

1

test가 생기지 않습니다.

0

500

3