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

在Beautiful Soup中提取s-item标签内超链接失败的技术求助

问题分析与解决方法

问题根源

你犯了两个典型的BeautifulSoup使用错误:

  1. li标签本身没有href属性:你定位的s-item是li标签,产品链接实际嵌套在li内部的<a>标签里,直接访问tag['href']自然会报错。
  2. find_all('href')用法错误:find_all()参数是标签名,不是属性名,你写find_all('href')是在找名为<href>的标签,这显然不存在,所以返回空列表。

正确的提取方法

要获取产品链接,需要先在li标签内找到对应的<a>标签,再从a标签中提取href属性。eBay列表页的产品链接通常在class为s-item__link的a标签里,代码修改如下:

from bs4 import BeautifulSoup
import requests

# 获取页面并解析
markup = requests.get(
    url='https://www.ebay.com/sch/i.html?_nkw=dyson+tower+fan&LH_ItemCondition=1000&ipg=240&_sop=12'
).content
soup = BeautifulSoup(markup, 'html.parser')
products = soup.find_all('li', attrs={'class': 's-item'})

# 提取链接的正确方式
tag = products[30]
# 先找到li内部的a标签
product_link_tag = tag.find('a', class_='s-item__link')
if product_link_tag:
    # 从a标签提取href属性
    print(f'Link : {product_link_tag["href"]}')
else:
    print('未找到产品链接标签')

补充说明

  • 如果不确定a标签的class,可以直接用tag.find('a')查找第一个a标签,但建议指定class避免匹配到无关的a标签(比如广告链接)。
  • 实际爬取时建议增加异常处理,防止部分产品结构异常导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:36:23