requests 라이브러리 사용
파이썬 예제 실행도중 에러발생하면
html 코딩연습을 하는 와중에 처음에는 되다가 코딩을 하고 웹페이지 확인을 위해서 액션을 눌러서 디버깅하려고 하는데 지속적인 File "<stdin>", line 1 SyntaxError: invalid syntax오류 코드가 나와서 어리둥절하고 있었다.
SyntaxError: invalid syntax
>>> C:/Users/User/anaconda3/python.exe c:/Users/User/homepage/templastes/views.py
File "<stdin>", line 1
C:/Users/User/anaconda3/python.exe c:/Users/User/homepage/templastes/views.py
^
SyntaxError: invalid syntax
>>>
그러면
exit() 를 입력하거나 컨트롤 z를 입력하면 다시 정상 작동한다.
그 이유는 무엇일까
오류의 내용은
파일의 1번째줄에서 ^표시된 부분에 잘못된 구문으로 인해 오류가 발생했다는 뜻이다.
그런데 명령프롬트창에 ctrl+z나 exit()를 입력하고 다시 실행하면 된다.
이 부분 참조
크롤링 : 웹페이지에서 정보를 가져오는 것
bs4 라이브러리 설치
pip install bs4
예제 작성
- 코드
import requests
from bs4 import BeautifulSoup
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')
디버깅툴 켜서 영화사이트에서 영화제목 링크 우클릭하여 copy selector 실행
앞뒤로 붙은 텍스트를 없애줌
strip()
문자열 치환
replace
mongo db 활용
사용자 추가
실행 예제
사용자 추가후 모든 사용자 출력
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.w4kj2pc.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
#doc = {'name':'영희','age':30}
#db.users.insert_one(doc)
#doc = {'name':'철수','age':20}
#db.users.insert_one(doc)
all_users = list(db.users.find({},{'_id':False}))
for a in all_users:
print(a)
-- 코드 요약
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
- 퀴즈 풀어보기
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.w4kj2pc.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
#한개찾기
movie = db.movies.find_one({'title':'토리와 로키타'})
#print(movie['rate'])
target_rate = movie['rate']
#movies = list(db.movies.find({'rate':target_rate},{'_id':False}))
#for a in movies:
# print(a['title'])
db.movies.update_one({'title':'토리와 로키타'},{'$set':{'rate':0}})
-- 과제
지니뮤직 음원 순위 스크랩 하기
from pymongo import MongoClient
client = MongoClient('url입력하세요')
db = client.dbsparta
import requests
from bs4 import BeautifulSoup
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')
#print(soup)
#title = soup.select_one('#mainContent > div > div.box_ranking > ol > li:nth-child(1) > div > div.thumb_cont > strong > a')
#print(title.text)
#print(title['href'])
lis = soup.select('.list-wrap > tbody > tr.list')
#print(lis)
for li in lis:
title = li.select_one('td.info > a.title.ellipsis').text.strip()
rank = li.select_one('td.number').text[0:2].strip()
artist = li.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
728x90
'Study > 개발일지' 카테고리의 다른 글
[엑셀보다쉬운sql]강의 2주차 (0) | 2023.05.03 |
---|---|
[스파르타코딩]웹개발종합반 개발일지 4주차 (0) | 2023.05.02 |
[스파르타 코딩] 웹개발 종합반 2주차 개발일지 (0) | 2023.05.01 |
[스파르타코딩] 웹개발 종합반 1주차 개발일지 (0) | 2023.05.01 |
[SQL기초공부] 개발일지1일차 (0) | 2023.04.25 |