Python爬取印度能源仪表板数据遇证书及TableauScraper报错
解决印度能源仪表板爬取的证书错误与TableauScraper问题
核心问题分析
- 网站证书过期(
NET::ERR_CERT_DATE_INVALID)导致请求无法获取正常响应,这是触发后续TableauScraper错误的根源 - TableauScraper抛出的“NoneType对象无text属性”错误,本质是请求失败后返回空内容,代码尝试访问空对象的text属性引发异常
解决方案
1. 跳过证书验证,修复请求失败问题
TableauScraper底层依赖requests库,我们可以修改会话配置,强制跳过证书验证:
#!pip install TableauScraper requests from tableauscraper import TableauScraper as TS import requests # 创建跳过证书验证的requests会话 session = requests.Session() session.verify = False # 禁用证书警告(可选,避免控制台输出冗余信息) requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning) url = "https://public.tableau.com/app/profile/niti.energy.vertical/viz/ElectricityGeneration_0/Source" ts = TS(session=session) ts.loads(url) # 示例:获取工作表数据 workbook = ts.getWorkbook() for sheet in workbook.worksheets: print(f"工作表名称: {sheet.name}") print(sheet.data)
2. 额外优化建议
- 跳过证书验证存在安全风险,仅在确认目标网站可信时使用
- 若仍报错,可添加浏览器请求头模拟正常访问:
session.headers.update({ "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" })
内容的提问来源于stack exchange,提问作者NoobCoderPy
相关产品推荐
相关产品推荐

