我通过调用omdbapi来检索一个关于电影的JSON。我正在尝试将JSON添加到另一个字典中,该字典正在从here中获取信息。你知道吗
包含刮取信息的Dict具有以下结构:
{
'movie_title': [],
'review_text': [],
'review_url': [],
'reviewed_by': [],
'score': []
}
我通过循环omdbapi的响应,将值作为空列表动态添加到字典中,如下所示
api_key = ''
ombd_data = requests.get('http://www.omdbapi.com/?apikey=api_key'+'&t=Basmati+Blues&plot=full'
omdb_json = json.loads(omdb_data).content
for curr_key in omdb_json.keys():
movie_review_dict[curr_key] = []
dict现在有了结构
{
u'Actors': [],
u'Awards': [],
u'BoxOffice': [],
u'Country': [],
u'DVD': [],
u'Director': [],
u'Genre': [],
u'Language': [],
u'Metascore': [],
u'Plot': [],
u'Poster': [],
u'Production': [],
u'Rated': [],
u'Ratings': [],
u'Released': [],
u'Response': [],
u'Runtime': [],
u'Title': [],
u'Type': [],
u'Website': [],
u'Writer': [],
u'Year': [],
u'imdbID': [],
u'imdbRating': [],
u'imdbVotes': [],
'movie_title': [],
'review_text': [],
'review_url': [],
'reviewed_by': [],
'score': []
}
我有一个函数,它读取这个URL,使用BeautifulSoup模块并向dict添加元素,同时还从OMBD响应中添加数据。你知道吗
def read_html_page(home_page='http://www.rogerebert.com/reviews'):
movie_details = movie_review_dict
result = requests.get(url=home_page)
soup_obj = BeautifulSoup(result_content, 'html5lib')
wrapper_class = soup_obj.find('div', id='review-list')
for curr_movie_dom in wrapper_class.find_all('figure'):
movie_title = curr_movie_dom.find('h5', class_='title').a.get_text()
movie_critic = curr_movie_dom.find('p', class_='byline').get_text().strip()
omdb_dict = get_omdb_data(movie_title=movie_title)
for curr_key in omdb_dict.keys():
if curr_key in movie_details:
movie_details[curr_key].append(omdb_dict[curr_key])
else:
movie_details[curr_key] = []
movie_details[curr_key].append(omdb_dict[curr_key])
return movie_details
我试图将dict存储到pandas数据帧中,但出现了错误
ValueError('arrays must all be same length')
这是因为OMDB响应中的一些属性,比如“Languages”、“Website”存在于某些电影中,而不存在于其他电影中。你知道吗
我试过了
movie_df = pd.DataFrame(movie_review_dict)
movie_df = pd.DataFrame.from_dict(movie_details)
我也遇到了同样的错误。你知道吗
您可以尝试使用^{} 附加到空数据帧
相关问题 更多 >
编程相关推荐