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

如何迭代处理网页数据函数解决Python爬取网页链接跳转问题

问题修复方案

现有代码的核心问题

  • 循环内部每次都将u重置为初始的Fikret页面链接,导致每次循环都从头开始跳转,无法继续向下迭代
  • 使用全局列表conec、conec2存储所有页面的链接,每次取第n-1位的索引时,取到的不是当前页面的对应位置链接,索引完全错位
  • 定义了两个逻辑完全重复的爬取方法conectar和new_page,一次循环内调用两次相当于每次循环跳转2次,和要求的循环一次跳转1次的逻辑不符
  • 爬取页面链接时没有清空存储列表,每次都追加内容导致索引混乱

修复后代码

import urllib.request, urllib.parse, urllib.error
from bs4 import BeautifulSoup
import ssl

# 忽略SSL证书错误
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

def get_target_link(url, position):
    html = urllib.request.urlopen(url, context=ctx).read()
    soup = BeautifulSoup(html, 'html.parser')
    tags = soup('a')
    # 直接返回当前页面第position-1个链接,不需要全局存储
    return tags[position-1].get('href', None)

# 获取输入参数
count = int(input('Enter count: '))
position = int(input('Enter position: '))
# 初始页面
current_url = 'http://py4e-data.dr-chuck.net/known_by_Fikret.html'

# 循环跳转count次
for _ in range(count):
    current_url = get_target_link(current_url, position)

# 从最终url提取姓名
final_name = current_url.split('_')[-1].replace('.html', '')
print(f'最终姓名:{final_name}')
print(f'最终链接:{current_url}')

运行验证

输入count=4、position=3后,会按顺序跳转4次,最终得到的姓名为Anayah,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:48:00