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

Python网页爬取:如何检测无摘要链接并添加对应标识

解决方案

原代码的核心问题是只遍历了存在摘要链接的<a>标签,直接跳过了没有摘要的条目。要实现每个条目对应列表中的一个元素(无摘要时填充No Abstract Link),需要先定位每个论文条目对应的容器元素,再逐个检查容器内是否存在目标链接。

修改后的代码

from bs4 import BeautifulSoup
import requests

abstract_list = []

r = requests.get('https://www.deswater.com/vol.php?vol=5&oth=5|1-3|May|2009')
soup = BeautifulSoup(r.content, 'html.parser')

# 定位所有论文条目容器(页面中每个论文条目对应一个<tr>标签,可根据实际结构调整)
item_containers = soup.find_all('tr')

baseurl = 'https://www.deswater.com/'
for container in item_containers:
    # 在当前条目容器内查找目标摘要链接
    abstract_link = container.find(
        'a', 
        class_='testo_normale_rosso', 
        href=lambda x: x and 'show_abstract.php?varpdf=' in x
    )
    if abstract_link:
        # 拼接并格式化完整链接
        full_link = baseurl + abstract_link['href'].replace('show_abstract.php?varpdf=', '')
        abstract_list.append(full_link)
    else:
        # 无摘要链接时添加指定文本
        abstract_list.append('No Abstract Link')

# 过滤掉表头等非论文条目产生的无效项(可选,根据页面结构调整)
abstract_list = [
    item for item in abstract_list 
    if not (item == 'No Abstract Link' and 'Volume 5' in container.text)
]

print(abstract_list)

关键说明

  1. 先遍历条目容器:不再直接抓取<a>标签,而是先定位所有论文条目对应的容器(这里用<tr>,实际可根据页面HTML结构调整为div或其他标签),确保每个条目都被处理。
  2. 容器内精准查找:对每个容器单独检查是否存在符合条件的摘要链接,存在则处理链接格式,不存在则填充指定文本。
  3. 可选过滤:如果页面包含表头、分页等非论文条目容器,可通过文本特征过滤掉无效的No Abstract Link项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:50:23