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

Python Selenium循环爬取Google链接仅返回第一页,如何修复获取4页数据?

存在的问题
  • 核心逻辑错误:链接采集代码完全放在分页循环外部,仅在所有翻页操作执行完毕后才采集1次链接,只能拿到最终停留页面的结果
  • 缺少页面加载等待:点击页码后未等待页面渲染完成就执行后续操作,大概率出现翻页未生效、元素定位失败的问题,这也是你仅能拿到第一页链接的常见诱因
  • 未规避陈旧元素异常:每次翻页后页面DOM会重新渲染,之前查找的页码元素列表会直接失效,循环到第二次就会抛出元素失效的报错
  • 分页参数存在隐患:如果counter初始值不为0,会导致循环次数不足4次,无法完整覆盖前4页的采集需求
修复后的可运行代码
import pandas as pd
import time
# 提前初始化存储链接的列表
links = []
# 直接循环前4页,下标从0到3对应第1到第4页
for i in range(4):
    # 每次翻页前重新查找页码元素,避免陈旧元素异常
    page_no = driver.find_elements_by_xpath("//table[@class='AaVjTc']/tbody/tr/td/a")   
    page_no[i].click()
    # 等待2秒确保页面加载完成,可根据网络情况调整时长,也可以替换为显式等待
    time.sleep(2)
    # 采集当前页的搜索结果
    headings = driver.find_elements_by_xpath('//div[@class = "g"]')  
    for heading in headings:
        link = heading.find_element_by_css_selector('.yuRUbf>a').get_attribute("href")  
        links.append(link)    

# 导出结果
df_da=pd.DataFrame()
df_da['Link']=links
df_da.to_csv('links.csv',encoding='utf-8-sig')
优化建议
  • 可以把time.sleep替换为Selenium的显式等待,指定等待搜索结果列表加载完成再执行采集,运行效率更高
  • 如果频繁触发Google人机验证,可以添加请求头、降低翻页频率,或者使用无UA检测的无头浏览器配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:01