Power Query网页连接无法获取表格,请求Python脚本解决方案
解决https://exchange.gov.tm/quotations表格抓取问题
这个网站的表格是通过JavaScript动态渲染的,Power Query默认的静态网页抓取方法无法获取到内容,以下是两种可行的解决办法:
一、Power Query 处理方案
使用Web.BrowserContents模拟浏览器加载动态内容,步骤如下:
- 打开Power Query编辑器,选择【获取数据】>【自其他来源】>【自Web】
- 输入目标URL后,切换到【选项】标签,勾选「使用浏览器连接网页」
- 加载完成后进入转换界面,找到页面中的表格节点,使用【从HTML提取表格】功能即可导出数据
如果遇到加载失败,可手动添加请求头模拟浏览器:
let Source = Web.BrowserContents("https://exchange.gov.tm/quotations", [Headers=[#"User-Agent"="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"]]), #"提取HTML表格" = Html.Table(Source, {{"列1", "table"}, {"列2", "table tr"}, {"列3", "table tr td"}}, [RowSelector="table tr"]) in #"提取HTML表格"
二、Python 抓取脚本
用Selenium模拟浏览器渲染页面,完整代码如下:
首先安装依赖包:
pip install selenium pandas webdriver-manager
脚本代码:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import pandas as pd from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化Chrome浏览器 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get("https://exchange.gov.tm/quotations") # 等待表格加载完成(最长等待10秒) wait = WebDriverWait(driver, 10) table = wait.until(EC.presence_of_element_located((By.TAG_NAME, "table"))) # 把表格数据转成DataFrame df = pd.read_html(table.get_attribute('outerHTML'))[0] # 输出数据并保存为Excel print(df) df.to_excel("土库曼斯坦汇率数据.xlsx", index=False) # 关闭浏览器 driver.quit()
如果需要后台运行(不显示浏览器窗口),添加无头模式配置:
options = webdriver.ChromeOptions() options.add_argument('--headless=new') driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
内容的提问来源于stack exchange,提问作者Xazratxon Sultonxonov
相关产品推荐
相关产品推荐

