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

Python网页爬取求助:如何通过源URL获取点击跳转后的目标URL

问题:无法提取跳转后的目标URL

我在提取URL跳转流程时遇到阻碍:访问源URL后会重定向到一个带点击按钮的页面,必须点击按钮才能进入实际要爬取的目标页面。

  • 源URL:http://ndl.iitkgp.ac.in/nw_document/economictimes/IN__T_E_T___2__1_2001__3_12__65_05__23_71
  • 点击按钮后进入目标页面(对应页面可查看截图)

我使用Selenium、WebDriver和Beautiful Soup编写代码,但现有代码无法找到所需链接:

soup = BeautifulSoup(driver.page_source, 'html.parser')

# Find the final URL based on the given HTML structure
final_link = soup.find('a', class_='btn btn-success', href=True)

if final_link:
    final_url = final_link['href']
    print(f"Found final URL: {final_url}")
    posts_urls.append(final_url)
else:
    print("No final URL found in the expected format.")
解决方案

1. 等待元素加载完成

页面可能存在异步加载,直接获取page_source时目标元素还未渲染,需用Selenium的显式等待确保元素加载完成:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 最长等待10秒,直到目标按钮元素出现
wait = WebDriverWait(driver, 10)
target_btn = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "btn-success")))

# 获取按钮的href属性
final_url = target_btn.get_attribute('href')
if final_url:
    print(f"找到目标URL: {final_url}")
    posts_urls.append(final_url)
else:
    print("未找到目标URL")

2. 修正Beautiful Soup的元素选择器

原代码用class_='btn btn-success'无法匹配多类名(空格分隔的多个class),改用CSS选择器即可正确定位:

soup = BeautifulSoup(driver.page_source, 'html.parser')
# 使用CSS选择器匹配同时拥有btn和btn-success类的a标签
final_link = soup.select_one('a.btn.btn-success[href]')
if final_link:
    final_url = final_link['href']
    print(f"找到目标URL: {final_url}")
    posts_urls.append(final_url)
else:
    print("未找到目标URL")

3. 直接点击按钮后获取当前URL

如果目标URL是点击按钮后跳转得到的,也可以直接点击按钮,再获取跳转后的页面URL:

# 等待按钮可点击
target_btn = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "btn-success")))
target_btn.click()

# 获取跳转后的当前页面URL
final_url = driver.current_url
print(f"跳转后的目标URL: {final_url}")
posts_urls.append(final_url)

关键注意点

  • 先通过浏览器开发者工具确认按钮的实际class属性,避免选择器匹配错误
  • 如果页面存在弹窗、iframe等干扰元素,需先处理这些元素再定位目标按钮

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:46:00