You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Letterboxd日记页面提取影片URL以调用爬取函数?

问题

我已经实现了一个函数,能从单个Letterboxd影片页面(示例:https://letterboxd.com/film/when-marnie-was-there/)爬取影片名称、上映日期、演员等信息。现在需要从个人Letterboxd日记页面(https://letterboxd.com/gfac/films/diary/)提取所有已观影影片的完整URL,用来调用这个函数。

浏览器开发者工具里找不到完整的影片URL,所以打算提取部分路径拼接成标准格式:https://letterboxd.com/film/[影片标识]/。目前我写了teste函数,能获取到包含部分路径的a标签,但不知道怎么提取出需要的URL。

现有代码
def teste(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "html.parser")
    elem = soup.find_all("h3", {"class": "headline-3 prettify"})[0]
    return elem

a = teste("https://letterboxd.com/gfac/films/diary/")
print(a)
返回结果

When Marnie Was There

解决方案

要提取符合要求的完整影片URL,只需对现有代码做以下修改:

  • 从目标h3标签中提取a标签的href属性
  • 处理href字符串,剥离多余的用户路径部分,保留/film/开头的影片路径
  • 拼接Letterboxd基础域名,生成完整URL

修改后的代码支持提取日记页中所有已观影影片的URL:

import requests
from bs4 import BeautifulSoup

def get_film_diary_urls(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "html.parser")
    h3_list = soup.find_all("h3", {"class": "headline-3 prettify"})
    base_domain = "https://letterboxd.com"
    film_urls = []
    
    for elem in h3_list:
        # 提取a标签的href属性
        raw_href = elem.find("a")["href"]
        # 截取/film/及其后面的部分
        film_path = raw_href.split("/film/")[1]
        # 拼接成完整的影片URL
        full_url = f"{base_domain}/film/{film_path}"
        film_urls.append(full_url)
    
    return film_urls

# 调用函数获取所有已观影影片URL
all_film_urls = get_film_diary_urls("https://letterboxd.com/gfac/films/diary/")
for url in all_film_urls:
    print(url)
代码说明
  • 遍历页面中所有目标h3标签,一次性提取所有已观影影片的URL
  • 通过字符串分割处理原始路径,确保得到的URL符合单个影片页面的标准格式
  • 返回的URL列表可直接传入你已实现的单个影片信息爬取函数中使用

内容的提问来源于stack exchange,提问作者Gabriel Facheti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:01:00