【问题标题】:Add Image/thumbnail in my python dataframe在我的 python 数据框中添加图像/缩略图
【发布时间】:2022-11-01 10:38:37
【问题描述】:
我正在做一个需要创建电影数据库的项目。
我已经创建了我的数据库并从 IMDB 导入了将您重定向到网页的链接。我还想添加每部电影的主图像/缩略图,以便我可以在 Power BI 中使用 csv。
但是,我没有设法做到这一点:
我试过这个:
import requests
from bs4 import BeautifulSoup
import numpy as np
images = []
for i in df_database_url['Url Film']:
r = requests.get(i)
soup = BeautifulSoup(r.content, "html.parser")
images.append(image_url)
但我的目标是创建一个包含每部电影缩略图的列。
【问题讨论】:
标签:
python-3.x
dataframe
image
beautifulsoup
moviepy
【解决方案1】:
假设i 是一个imdb 电影网址(以https://www.imdb.com/title 开头的那种),您可以定位script 标签,seems to contain 很多电影的主要信息 - 您可以通过
# import json
image_url = json.loads(soup.select_one('script[type="application/ld+json"]').text)['image']
或者,如果我们更加谨慎:
# import json
scCont = [s.text for s in soup.select('script[type="application/ld+json"]') if '"image"' in s.text]
if scCont:
try:
scCont = json.loads(scCont[0])
if 'image' not in scCont:
image_url = None
print('No image found for', i)
else: image_url = scCont['image']
except Exception as e:
image_url = None
print('Could not parse movie info for', i, '
', str(e))
else:
image_url = None
print('Could not find script with movie info for', i)
(您可以使用scCont['trailer']['thumbnailUrl'] 获取预告片缩略图)
这样,如果预期信息路径上的任何内容不可用,它不会引发错误,而是将image_url 添加为None;如果你想在这种情况下要停止并引发错误,请使用第一个版本。
然后在循环之后,您可以在列中添加类似的内容
df_database_url['image_urls'] = images
(你可能知道...)