You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

批量抓取标签:如何修正代码获取IMDB Top250全部电影链接?

解决IMDB Top250全影片链接抓取问题

嘿,我一眼就看出问题所在啦——你的代码只拿到第一个影片链接,是因为你用了find()而不是find_all()来定位影片所在的单元格!

问题根源

bs.find('td',{'class':'titleColumn'})只会返回页面中第一个匹配到的td.titleColumn元素,所以你的循环只处理了第一个影片的行,自然只能拿到一条链接。要获取全部250部电影的对应元素,得用find_all()来抓取所有符合条件的单元格。

修改后的完整代码

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen('https://www.imdb.com/chart/top/')
bs = BeautifulSoup(html,'html.parser')
links = []
# 用find_all获取所有包含影片标题的td元素
for title_td in bs.find_all('td', {'class': 'titleColumn'}):
    # 从每个td里提取对应的a标签链接
    movie_link = title_td.find('a')['href']
    links.append(movie_link)

# 现在links里就是全部250部电影的链接啦
print(links)

额外提示

  • 这段代码会遍历每一个影片对应的标题单元格,从中提取出影片详情页的相对链接。如果需要完整的URL,可以在拼接时加上IMDB的域名(比如f"https://www.imdb.com{movie_link}")。
  • 注意IMDB的页面结构可能会随时间调整,如果后续抓取失效,可以检查页面元素的类名或结构是否发生变化。

内容的提问来源于stack exchange,提问作者Marco Nashaat

火山引擎 最新活动