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

如何获取UNGC网站中无src属性的Twitter iframe内的账号名?

嘿,这个问题我之前做类似爬取的时候碰到过!那种没有src属性的iframe,大多是页面加载后通过JavaScript动态注入内容的,不是一开始就有明确的源地址。给你几个实用的解决思路:

思路1:直接找后台API接口(最高效)

比起折腾iframe,直接抓数据源是最省心的:

  • 打开目标企业页面,按下F12调出浏览器开发者工具,切换到Network标签页,刷新页面。
  • 过滤「XHR/fetch」类型的请求,找和社交媒体、参与者详情相关的接口。很多这类网站会用API来动态加载iframe里的内容,你可以查看请求返回的JSON数据,大概率能找到Twitter账号信息。
  • 找到对应的API后,直接用requests库发送请求就能拿到数据,不用管iframe的渲染问题。
思路2:用自动化工具渲染JavaScript(兜底方案)

如果找不到合适的API,那就用能处理动态JS的工具来模拟浏览器渲染页面,比如Selenium或者Playwright:

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 time

# 初始化浏览器(这里用Chrome,需要对应版本的chromedriver)
driver = webdriver.Chrome()
driver.get("https://www.unglobalcompact.org/what-is-gc/participants/2968-Orsted-A-S")

# 等待iframe加载完成,通过属性定位(比如class、id,实际要根据页面调整)
iframe = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "social-media-iframe"))
)
# 切换到iframe上下文
driver.switch_to.frame(iframe)

# 定位Twitter链接元素,提取账号名
twitter_link = driver.find_element(By.CSS_SELECTOR, "a[href*='twitter.com']")
twitter_username = twitter_link.get_attribute("href").split("/")[-1]
print(f"提取到的Twitter账号:@{twitter_username}")

# 切回主页面,关闭浏览器
driver.switch_to.default_content()
time.sleep(1)
driver.quit()

Playwright示例代码(更轻量,无头模式推荐)

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 无头模式启动浏览器,不显示界面
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://www.unglobalcompact.org/what-is-gc/participants/2968-Orsted-A-S")
    
    # 等待iframe加载,通过属性定位(比如title,实际看页面的iframe属性)
    iframe_selector = page.wait_for_selector("iframe[title*='Social']")
    # 获取iframe的内容框架
    content_frame = iframe_selector.content_frame()
    
    # 定位Twitter链接并提取账号
    twitter_link = content_frame.wait_for_selector("a[href*='twitter.com']")
    twitter_url = twitter_link.get_attribute("href")
    twitter_username = twitter_url.split("/")[-1]
    print(f"提取到的Twitter账号:@{twitter_username}")
    
    browser.close()
一些注意事项
  • 一定要遵守UNGC网站的robots.txt规则,不要频繁发送请求,建议加个time.sleep()延迟,或者使用代理池避免被封IP。
  • 页面的元素选择器(比如class、id)可能会随网站更新变化,要定期检查页面结构,及时调整代码里的定位规则。

内容的提问来源于stack exchange,提问作者Bartosz Bagiński

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:22:48