# 크롤링 기본코드
import requests
from bs4 import BeautifulSoup
url = 'https://movie.naver.com/movie/bi/mi/basic.nhn?code=171539'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(url,headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
# 여기에 코딩을 해서 meta tag를 먼저 가져와보겠습니다.
copy selector로 복사 후 출력해보면 결과가 나오지 않는 것을 확인할 수 있다!
// 파이썬 태그와 메타태그 순서가 달라 이 방법은 찾기가 힘들거나 나오지않아요!
title = soup.select_one('head > meta:nth-child(9)')
print(title)
이럴경우에는! soup을 좀 더 응용해볼 수 있어요
title = soup.select_one('meta[property="og:title"]')
print(title)
content="그린 북" 으로 되어있으므로
title = soup.select_one('meta[property="og:title"]')['content']
print(title)
##- 이렇게하면 제목이 출력되는 것을 알 수 있어요! >>이런식으로 제목/이미지/줄거리 등을 갖고오면 됩니다~~!
위 처럼 하나씩 가져와서 입력한 후 결과값을 확인 할 수 있어요
app.py에 기본뼈대를 붙여넣어주기
python
from flask import Flask, render_template, jsonify, request
app = Flask(__name__)
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
## HTML을 주는 부분
@app.route('/')
def home():
return render_template('index.html')
@app.route('/memo', methods=['GET'])
def listing():
sample_receive = request.args.get('sample_give')
print(sample_receive)
return jsonify({'msg':'GET 연결되었습니다!'})
## API 역할을 하는 부분
@app.route('/memo', methods=['POST'])
def saving():
sample_receive = request.form['sample_give']
print(sample_receive)
return jsonify({'msg':'POST 연결되었습니다!'})
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)
templates파일에 새 html 파일 index.html 만든 후 기본 뼈대 붙여넣기!
메모장의 포스팅박스를 열어보면 필요한 자료는 url과 코멘트임을 확인할 수 있어요
모든 작업을 하기 전 크롤링으로 불러올 수 있게하는 작업과 db에 저장할 수 있도록 하는 뼈대작업이 되어있는지 확인부터 하고 시작해줍니당!
다 확인이 되어있다면 먼저 서버작업을 해주면 app.py에서 데이터를 불러올 곳을 지정해줍니당(url과 comment지정)
그런 다음 3번의 메타태그 크롤링해줬던 곳에서 복사해온 후 def saving(): 하단에 꼭 붙여줘야합니다!
그래야 데이터를 잘 불러올 수 있어요!! 주의!!
- url은 불러올 곳을 지정해 두었기 때문에 굳이 따로 지정해주지 않아도 되므로 삭제하고 불러올 곳을 url_receive로 지정해두었습니다~~!
데이터가 필요한 url과 코멘트값을 불러와야하므로 서버에서 지정해놨던 값을 입력해주면 됩니당!!
articles = list(db.articles.find({}, {'_id': False}))
콘솔창 확인하면 입력했던 데이터가 잘 들어왔음을 확인할 수 있습니다!
콘솔창의 값을 좀 더 세분화해서 보면 comment, desc, image, title, url 있는 것을 활용하여 각 항목이 보이게끔 작업해주기
console창 확인하면 작업이 잘 됐음을 확인 할 수 있어요
console창을 잘 확인했다면 이번엔 데이터가 양식에 맞게 잘 나올 수 있도록 작업해줘야해요
let temp_html = `` 활용하기!
각 데이터가 나타날 곳을 body태그안에서 찾아 그 문단을 복사해서 temp_html = `` <-요기안에 붙여넣기
이미지/url/제목/설명/코멘트 나오는 곳에 ${} 이렇게 지정해준다
결과값이 보이게 하기위해 묶어진 문단 id명을 찾아 append로 보이게하기
$(#' ').append(temp_html