Python读取需点击HTML标签的链接内容遇308重定向如何解决?
解决方法
方案1:用Selenium模拟浏览器点击Tab
新页面的HTML内容需要手动点击Tab才会显示,pd.read_html无法处理这种动态交互,用Selenium可以模拟真实浏览器操作:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import pandas as pd # 初始化Chrome浏览器(需提前安装对应版本的chromedriver) driver = webdriver.Chrome() url = "https://busquedas.elperuano.pe/dispositivo/NL/2113205-1" driver.get(url) # 等待HTML Tab加载完成并点击(根据页面实际元素定位,此处假设Tab文本为"HTML") html_tab = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//*[text()='HTML']")) ) html_tab.click() # 获取加载完成后的页面源码,关闭浏览器 page_source = driver.page_source driver.quit() # 用pandas提取表格 df_project = pd.read_html(page_source) print(df_project)
安装依赖命令:pip install selenium
方案2:抓包获取HTML内容的真实接口
打开浏览器开发者工具(F12)切换到「网络」标签,点击页面的「HTML」Tab,观察新出现的网络请求,找到返回HTML内容的接口地址,直接请求该接口:
import requests import pandas as pd # 复制浏览器请求头中的必要参数(如User-Agent、Cookie) headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } # 替换为抓包得到的实际接口地址 api_url = "https://busquedas.elperuano.pe/api/dispositivo/html/2113205-1" response = requests.get(api_url, headers=headers) # 提取表格数据 df_project = pd.read_html(response.text) print(df_project)
该方法无需启动浏览器,效率更高,建议优先尝试。
方案3:检查页面静态源码中的隐藏内容
部分页面的Tab内容已存在于源码中,仅通过CSS隐藏,可直接用requests获取源码后提取表格:
import requests import pandas as pd url = "https://busquedas.elperuano.pe/dispositivo/NL/2113205-1" response = requests.get(url) # 尝试读取页面中所有表格,可能包含隐藏的HTML Tab内容 df_project = pd.read_html(response.text) print(df_project)
内容的提问来源于stack exchange,提问作者Maria Fernanda
相关产品推荐
相关产品推荐

