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

爬取数据分页实现求助:多页面商品链接获取失败

多页面商品链接爬取问题修复方案

你的代码存在以下几个关键问题:

  • URL未完成变量替换:原URL字符串中的{page}只是占位符,没有实际替换成传入的页码参数,导致请求的URL始终是错误格式。
  • 变量未初始化:links变量没有提前定义就直接调用append方法,会触发NameError。
  • 函数调用缩进错误:page1 = get_product_links(1)被缩进在函数定义内部,永远不会被执行。
  • append方法使用错误:links.append()返回的是None,你把它赋值给res后,后续的if res:判断永远不会生效,无法正确输出链接。

修复后的代码(支持多页爬取)

from requests_html import HTMLSession

s = HTMLSession()

def get_product_links(page):
    # 用f-string完成URL的页码替换
    url = f"https://lakesshoweringspaces.com/catalogue-product-filter/page/{page}"
    r = s.get(url)
    # 提前初始化空列表存储链接
    links = []
    products = r.html.find("article.contentwrapper section.collection-wrapper-item")
    for item in products:
        # 先获取a标签元素,再判断是否存在
        a_tag = item.find("a", first=True)
        if a_tag:
            link = a_tag.attrs.get("href")
            links.append(link)
            print(link)
        else:
            print("未找到商品链接")
    return links

# 爬取第1到第5页的示例(可根据实际页数调整)
all_links = []
for page_num in range(1, 6):
    page_links = get_product_links(page_num)
    # 如果当前页面没有返回链接,说明可能已经到最后一页,停止循环
    if not page_links:
        break
    all_links.extend(page_links)

print("所有商品链接:")
print(all_links)

额外说明

  • 循环时加入了空列表判断,当某一页没有获取到链接时自动停止,避免无效请求。
  • 使用attrs.get("href")替代直接取attrs["href"],可以避免因标签没有href属性导致的KeyError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:22:53