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

使用requests无法解析网站全部下一页链接,求非Selenium解决方法

解决无法获取第10页之后分页链接的问题

首先,你的脚本当前是通过查找title属性等于当前页码的<a>标签来获取下一页,但很多网站在分页到一定页数后,不会再显示所有数字页码,而是只保留当前页附近的几个页码,同时提供“下一页”按钮(对应西班牙语网站可能是“Siguiente”)。这就是为什么到第10页后找不到对应title的链接了。

不用Selenium的话,我们可以调整分页链接的定位方式,直接定位“下一页”按钮,而不是依赖数字页码的title属性。具体步骤如下:

1. 分析目标网站的分页结构

访问第10页后,查看页面的分页区域HTML,你会发现下一页链接通常会有明显的标识:

  • 可能带有特定的class(比如next-page)
  • title属性可能是西班牙语的“下一页”(比如Siguiente página)
  • 链接文本可能是>或者Siguiente

2. 修改脚本的分页定位逻辑

替换原来通过title='{p}'查找链接的代码,改为定位“下一页”按钮。这里我们假设下一页链接的文本是Siguiente,可以用BeautifulSoup的find方法匹配文本:

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import time  # 可选,添加延时避免被反爬

base = 'https://www.icab.es'
link = 'https://www.icab.es/?go=eaf9d1a0ec5f1dc58757ad6cffdacedb1a58854a600312cc82c494d2c55856f1e25c06b4b6fcee5ddabebfe2d30057589a86e9750b459e9d60598cc6e5c52a4697030b2b8921f29f'

with requests.Session() as s:
    s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
    
    while True:
        r = s.get(link)
        soup = BeautifulSoup(r.text,"lxml")
        
        # 这里处理你需要抓取的数据
        # ...
        
        # 定位下一页链接:查找文本包含"Siguiente"的a标签
        next_page = soup.find("a", string=lambda text: text and "Siguiente" in text.strip())
        
        if next_page:
            link = urljoin(base, next_page.get("href"))
            print("next page:", link)
            time.sleep(1)  # 可选,添加1秒延时,避免请求过于频繁被拦截
        else:
            print("已到达最后一页")
            break

3. 备选方案:检查URL参数构造分页链接

如果网站的分页是通过URL参数控制的(比如&page=11),你也可以尝试解析当前URL的参数,手动递增页码来构造下一页链接。不过这种方式需要确认网站的分页参数规则,你可以查看第1、2页的URL变化,找到页码对应的参数,然后循环递增该参数值即可。

比如,如果URL里的go参数包含分页信息,你可以尝试解码这个参数,或者观察页码变化时go参数的规律,不过这种方式相对复杂,优先推荐第一种定位“下一页”按钮的方法。

内容的提问来源于stack exchange,提问作者robots.txt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:32:52