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)
关键说明
- 先遍历条目容器:不再直接抓取
<a>标签,而是先定位所有论文条目对应的容器(这里用<tr>,实际可根据页面HTML结构调整为div或其他标签),确保每个条目都被处理。 - 容器内精准查找:对每个容器单独检查是否存在符合条件的摘要链接,存在则处理链接格式,不存在则填充指定文本。
- 可选过滤:如果页面包含表头、分页等非论文条目容器,可通过文本特征过滤掉无效的
No Abstract Link项。
内容的提问来源于stack exchange,提问作者user17356493
相关产品推荐
相关产品推荐

