【发布时间】:2021-04-07 04:51:39
【问题描述】:
我正在尝试从一些 IMDb 评级页面中提取“所有年龄段”的投票计数,但我编写的代码返回了额外的 HTML 代码,我不确定如何仅提取数字。 IMDb 有一些数据可供下载,但不包括男性和女性选民的数据。我已通读并尝试了类似 SO 问题中列出的解决方案,例如 BS4 Beautiful Soup extract text from find_all,但使用 .text 或 text=True 不会返回任何结果。
我正在使用的代码:
from bs4 import BeautifulSoup
from requests import get
from operator import itemgetter
imdburls = ['https://www.imdb.com/title/tt0029844/ratings','https://www.imdb.com/title/tt0030993/ratings']
Votes = []
for i in imdburls:
url = i
page = get(url)
soup = BeautifulSoup(page.content, 'lxml')
content = soup.find(id="main")
voteValues = content.find_all(class_="smallcell")
voteValues = itemgetter(0,5,10)(voteValues) # This returns the values from the 'All Ages' column
Votes.append(voteValues)
当我只想要实际数字时,Votes 会为第一个 url 返回这个:
[(<div class="smallcell">
<a href="/title/tt0029844/ratings?demo=imdb_users">
1,761
</a>
</div>,
<div class="smallcell">
<a href="/title/tt0029844/ratings?demo=males">
1,176
</a>
</div>,
<div class="smallcell">
<a href="/title/tt0029844/ratings?demo=females">
178
</a>
</div>),
任何帮助将不胜感激,谢谢。
【问题讨论】:
标签: python beautifulsoup