자 이제, 우리는 앞서 봤던 사이트를 통해서 조각 기능을 구현하는것을 해볼것이다..!
자 우리가 api를 설계했으면, 그 기술을 먼저 검증해봐야 한다...
즉 그런 기능들을 미리 설계해서 테스트 해보는데 그런것들을 조각기능이라고 한다..
즉, 이미지 ,제목 ,요약을 어떻게 url만 갖고 크롤링을 하는지 요거를 먼저 알아보자
결론적으로는 meta태그라는 것을 이용해서 크롤링을 해볼것이다.!
그렇담 메타테그란 무엇인가?
위 예를 보면서 이해해보자!
우리는 앞서 말한대로 url을 넣어서 ,이미지 ,제목 ,요약 등을 가지고 와야 한다.
그렇다면 이 url이 어디에 있나?
자 meta태그라는것은 head태그 안에 있다.
자 그린북 카드링크를 눌러보면
movie.naver.com/movie/bi/mi/basic.nhn?code=171539
이런식으로 meta태그 og:image,og:title,og:description 이라는 것을 메타태그 에 넣어두면 우리가 스크래핑을 해서 잘
뿌려 줄 수 가 있다.!
자 그럼 우리가 할것은 이 og:image,og:title,og:description을 스크래핑을 해올것이다.
자
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')
title = soup.select_one("head > meta:nth-child(9)")
print(title)
이렇게 하면 값이 나올꺼 같지만, 프린트해도 아무런 값이 나오지 않는다.
왜 그럴까?
이제부터 크롤링의 묘미를 알아보자.!
가장 다른점은 우리가 브라우저에서 들어갔을떄 나오는 meta태그의 순서와 파이썬 코드가 들어갔을때 나오는 메타태그 순서가 다르기 때문
그렇다. 그래서 이것보다는 다른 방법을 알아보자. 즉 새로운 beatifulsoup의 팁이다.
그 방법은 이거다.
title = soup.select_one('meta[property="og:title"]')
이것의 의미는 메타태그중에서 이 속성이 일치하는 애를 가지고 와라 를 의미한다.!
즉 여기서는
property="og:title"
이 부분이 될것이다.
여기서 이 컨텐츠만 가지고 오면 된다.
그래서
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')
title = soup.select_one('meta[property="og:title"]')
print(title["content"])
이렇게 하면 컨텐츠만 가지고 온다.!
계속해서 응용하면,,
최종적으로 결과가 이렇게 된다!
자 최종적으로 조각기능을 완성한것이다.!
'웹 프로그래밍(풀스택-->python)' 카테고리의 다른 글
50. 항상 필요한 템플릿 코드(python) (0) | 2021.05.08 |
---|---|
49. POST 연습(메모하기) (0) | 2021.05.07 |
47. API 설계하기 (0) | 2021.05.06 |
46. 프로젝트 세팅 (0) | 2021.05.05 |
45. GET 연습( 리뷰 보여주기) (0) | 2021.05.02 |