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 활용
사용자 추가
![](https://blog.kakaocdn.net/dn/CbSda/btsddTozlk2/dw72EBTookCboXAAjdHN9K/img.png)
실행 예제
사용자 추가후 모든 사용자 출력
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 |