如何从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
相关产品推荐
相关产品推荐

