IMDB 웹 사이트에 수상 정보를 저장하고 싶지만 필요한 자바 스크립트 텍스트에 액세스 할 수 없습니다.
import pandas as pd
import numpy as np
import requests
from bs4 import BeautifulSoup
urls = [
'https://www.imdb.com/event/ev0000003/2000',
'https://www.imdb.com/event/ev0000003/2001',
]
for url in urls:
response = requests.get(url_test).content
soup = BeautifulSoup(response, 'html.parser')
soup.find_all('script', {'type':'text/javascript'})
이제 범주 정보에만 액세스하려면 어떻게해야합니까?
"categories":[{"categoryName":"Best Actor in a Leading Role","nominations":[{"primaryNominees":[{"name":"Kevin Spacey","note":null,"imageUrl":.....
다른 상과 수년 동안이 작업을 수행해야하므로 json 파일에 저장하는 것이 제 아이디어입니다.
{"award": "oscars",
"year": "2000",
"data": [{"categoryName":"Best Actor in a Leading Role","nominations":[{"primaryNominees":[{"name":"Kevin Spacey","note":null,"imageUrl":.....
}
데이터는 페이지의 javascript에 저장되므로 예를 들어 regexp를 통해 액세스 할 수 있습니다. 데이터를 구문 분석하려면 json
모듈 을 사용할 수 있습니다 .
예를 들면 :
import re
import json
import requests
urls = [
'https://www.imdb.com/event/ev0000003/2000',
'https://www.imdb.com/event/ev0000003/2001',
]
for url in urls:
response = requests.get(url).text
data = json.loads( re.findall(r'IMDbReactWidgets\.NomineesWidget\.push.*?(\{.*\})', response)[0] )
# print(json.dumps(data, indent=4)) # <-- comment this out to print all data
for award in data['nomineesWidgetModel']['eventEditionSummary']['awards']:
if award['awardName'] != 'Oscar':
continue
for category in award['categories']:
print(category['categoryName'])
print('-' * 80)
인쇄물:
Best Actor in a Leading Role
Best Actor in a Supporting Role
Best Actress in a Leading Role
Best Actress in a Supporting Role
Best Art Direction-Set Decoration
Best Cinematography
Best Costume Design
Best Director
Best Documentary, Features
Best Documentary, Short Subjects
Best Effects, Sound Effects Editing
Best Effects, Visual Effects
Best Film Editing
Best Foreign Language Film
...and so on.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다