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

网页抓取:如何忽略find方法返回的第一个匹配项获取完整日期?

解决BeautifulSoup仅抓取到年份而非完整日期的问题

问题场景

网页中存在两个class相同的<input>日期元素:第一个仅显示年份,第二个显示完整日期。使用find方法只会返回第一个元素(仅年份),需要获取第二个完整日期的匹配值。

现有代码:

root_items = soup.find_all("div", class_="asset-full-content clearfix mb-5 no-title")

for root in root_items:
    response = root.find("input", class_="field form-control").get('value')

解决方案

方法1:用find_all获取所有匹配项,取第二个元素

将find替换为find_all,通过索引[1](索引从0开始)获取第二个元素,同时添加判断避免索引越界:

root_items = soup.find_all("div", class_="asset-full-content clearfix mb-5 no-title")

for root in root_items:
    date_inputs = root.find_all("input", class_="field form-control")
    # 确保存在至少两个匹配元素
    if len(date_inputs) >= 2:
        full_date = date_inputs[1].get('value')
        # 后续处理完整日期
        print(full_date)

方法2:使用CSS选择器定位第二个元素

利用CSS选择器的:nth-of-type(2)直接选中第二个匹配的<input>元素:

root_items = soup.find_all("div", class_="asset-full-content clearfix mb-5 no-title")

for root in root_items:
    full_date_input = root.select_one("input.field.form-control:nth-of-type(2)")
    if full_date_input:
        full_date = full_date_input.get('value')
        # 后续处理完整日期
        print(full_date)

注意点

  • 必须添加存在性判断,防止因页面结构变化导致的索引越界或元素不存在报错
  • 两种方法均依赖元素顺序固定(年份在前、完整日期在后)的前提

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:15:35