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

Python 2.7.13获取土耳其IS银行外汇页解码后HTML源码的方法

解决Python 2.7获取网页解码后HTML的问题

问题原因

页面部分内容是通过前端JavaScript解码Base64编码内容后渲染的。requests.get只能获取服务器返回的原始HTML源码,不会执行页面中的JS,所以拿到的是未解码的Base64内容;而浏览器会自动执行JS完成解码渲染,因此能看到正常内容。

解决方案

方案1:用Selenium模拟浏览器渲染(推荐)

通过模拟浏览器行为,让页面完成JS渲染后再获取源码,直接拿到解码后的完整HTML。

步骤:

  1. 安装适配Python2.7的Selenium版本:
pip install selenium==3.141.0
  1. 下载对应Chrome版本的ChromeDriver(版本需与本地Chrome浏览器一致)

代码示例:

from selenium import webdriver
import time

url = "https://www.isbank.com.tr/en/foreign-exchange-rates"
# 替换为你的ChromeDriver文件路径
driver = webdriver.Chrome(executable_path="./chromedriver")
driver.get(url)
# 等待页面JS渲染完成,时间可根据实际情况调整
time.sleep(2)
# 获取渲染后的完整页面源码
decoded_html = driver.page_source
driver.quit()

# 输出或处理解码后的内容
print(decoded_html)

方案2:手动定位并解码Base64内容

如果不想用浏览器模拟,可以从原始HTML中提取Base64编码片段,手动解码。需要先分析页面结构,找到编码内容的位置。

代码示例:

import requests
import base64
import re

url = "https://www.isbank.com.tr/en/foreign-exchange-rates"
resp = requests.get(url)
raw_html = resp.text

# 用正则匹配页面中的Base64编码内容(需根据实际页面结构调整正则表达式)
# 示例匹配类似"data:text/html;base64,XXX"中的XXX部分
base64_matches = re.findall(r'base64,([^"]+)', raw_html)

if base64_matches:
    for b64_content in base64_matches:
        # Python2.7中b64decode返回字节流,需转成字符串
        decoded_content = base64.b64decode(b64_content).decode("utf-8")
        print(decoded_content)

注意事项

  • Python 2.7已停止官方维护,若长期使用建议升级到Python 3版本,避免编码兼容性问题
  • 方案1中ChromeDriver版本必须与本地Chrome浏览器版本匹配,否则会报错
  • 方案2的正则表达式需要根据页面实际的Base64内容位置调整,若页面结构更新,需重新匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:00:47