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

使用Python提取洛杉矶街头艺术网站壁画链接失败,请求调试帮助

问题分析与代码调试

问题原因

  1. 动态内容渲染:该网站采用JavaScript动态加载壁画列表内容,直接通过get()请求获取的是未渲染的原始HTML,此时目标网格元素还未生成,所以你的选择器无法匹配到任何内容,返回空列表。
  2. 选择器冗余脆弱:原代码使用的嵌套class选择器过于冗长,一旦网站调整CSS类名,选择器就会失效,容错性差。

调试后的代码

from requests_html import HTMLSession
import warnings

warnings.filterwarnings("ignore", category=DeprecationWarning)

s = HTMLSession()

def get_mural_links():
    url = 'https://streetartcities.com/cities/losangeles/artworks'
    links = []
    r = s.get(url)
    
    # 等待JavaScript渲染页面,超时设置为10秒
    r.html.render(timeout=10)
    
    # 简化选择器,直接定位包含壁画链接的a标签(通过其href特征)
    mural_items = r.html.find('a[href^="/artworks/"]')
    for item in mural_items:
        # 拼接域名得到完整可访问链接
        full_link = f"https://streetartcities.com{item.attrs['href']}"
        links.append(full_link)
    
    return links

print(get_mural_links())

关键修改点

  • 添加r.html.render(timeout=10):触发requests_html的无头浏览器渲染逻辑,等待页面JavaScript执行完毕,生成包含壁画列表的完整DOM结构。
  • 优化选择器:使用a[href^="/artworks/"]直接匹配所有壁画详情页的链接,相比嵌套class选择器,更不容易因网站样式调整而失效。
  • 拼接完整URL:原页面返回的是相对路径,拼接域名后得到可直接访问的完整壁画链接。

内容的提问来源于stack exchange,提问作者Jessie H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:02:33