728x90
안녕하세요. 모두의 파이썬입니다. 1탄에서는 첫 번째 동영상 정보를 크롤링 했습니다. 1탄에서는 'tag'와 속성으로 크롤링 하는 것이 아닌, text의 위치정보로 크롤링을 하였습니다. 2탄에서는 반복적 규칙적인 text 위치 정보를 찾아서 여러 동영상 정보를 크롤링 하겠습니다.
전체 글을 요약하면, 반복적인 text 위치정보를 찾아 여러 동영상 정보 크롤링입니다.
아래 그림에 보이는 10개 동영상 제목과 url을 크롤링 하겠습니다.
html text 분석하여 규칙적인 구문을 찾겠습니다. 제목 앞에 "title":{"runs":[{"text":" text가 있어서 제목 위치를 찾을 수 있고, 제목이 끝나는 "}]," 이 부분을 split으로 분리시키면 list가 되는데 list의 0번째가 제목이 되고, url은 제목 위치에서부터 url 앞에 "commandMetadata":{"webCommandMetadata":{"url":" text가 있어서 url을 찾을 수 있습니다. url이 끝나는 ","webPageType" 이 부분을 split으로 분리시키면 list 0번째가 url이 됩니다.
코드로 확인하겠습니다
In [20]:
## 유튜브에서 동영상 정보 크롤링 (crawling)
## 유튜브에서 동영상 정보 크롤링 (crawling)
import requests
from bs4 import BeautifulSoup
import json
def get_html(url):
## 브라우저 호환을 위해서 설정
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '+ \
'(KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
}
##해당 url에 htlm(정보) 요청에사용 / url은 사용자가 원하는 url
r = requests.get(url, headers=headers)
## 해당 url의 html을 사용자가 활용하기 쉽게 변환
html = BeautifulSoup(r.content, 'html.parser')
## 결과값 전달
return html
def get_youtube_video_crawling():
url = 'https://www.youtube.com/c/BLACKPINKOFFICIAL/videos'
html = get_html(url)
##제목 시작 위치
title_point1 = 0
##url 시작 위치
url_point1 = 0
## html에서 제목위치 직전 text
title_param1 = '"title":{"runs":[{"text":"'
## html에서 url위치 직전 text
url_param = '"commandMetadata":{"webCommandMetadata":{"url":"'
for i in range(0,10):
## 제목위치 직전 text 위치
point1 = str(html)[title_point1:].find(title_param1, 0)
## 제목위치
title_point1 = title_point1 + point1 + len(title_param1)
## url위치 직전 text 위치
point2 = str(html)[title_point1:].find(url_param, 0)
## url위치
url_point1 = title_point1 + point2 + len(url_param)
## 제목출력
print(str(html)[title_point1:title_point1+1000].split('"}],"')[0])
## url출력
print('https://www.youtube.com'+ \
str(html)[url_point1:url_point1+1000].split('","webPageType"')[0])
get_youtube_video_crawling()
print('모두의 파이썬')
※좋아요/댓글은 서로를 응원합니다!
728x90
반응형
'파이썬 > 크롤링' 카테고리의 다른 글
[python-파이썬] 15 네이버에서 지역별 인구정보 크롤링 (crawling) - 2탄 (2) | 2022.05.05 |
---|---|
[python-파이썬] 13 mk증권에서 시간외단일가 크롤링 (crawling) (0) | 2022.04.30 |
[python-파이썬] 12 빗썸에서 호가정보 크롤링 (crawling) (0) | 2022.04.26 |
[python-파이썬] 16 멜론에서 인기순위 크롤링 (crawling) (0) | 2022.04.23 |
[python-파이썬] 17 네이버웹툰 순위정보 크롤링 (crawling) (0) | 2022.04.23 |