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

使用urllib做webscraping无法获取站点姓名信息?如何获取地图顾问数据?

问题原因

  • 核心原因是目标站点的顾问信息属于客户端动态渲染内容:你用urllib直接请求拿到的仅为页面初始静态HTML骨架,顾问数据是浏览器加载完初始页面后,异步调用后端接口获取、再动态插入到页面中的,初始HTML本身不存在这些信息。
  • 额外可能的原因:urllib默认发送的请求无正常浏览器的请求头标识,很容易被站点的反爬机制识别为爬虫,返回无有效数据的拦截响应。

可行获取方案

方案1:抓取数据接口(效率最高)

打开浏览器开发者工具的「网络」面板,刷新页面后筛选Fetch/XHR类型的请求,找到返回顾问数据的后端接口,确认接口的请求参数、请求头要求后,直接构造符合要求的请求调用该接口,即可直接拿到结构化的JSON格式顾问数据,无需解析HTML。
注意构造请求时需要补全User-Agent、Referer等请求头字段,模拟正常浏览器请求避免被拦截。

方案2:使用无头浏览器渲染动态内容

如果接口参数加密、分析成本高,可以使用Selenium、Playwright等支持浏览器自动化的工具,启动无头模式加载完整页面,等动态内容全部渲染完成后再提取数据,示例代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

chrome_options = Options()
# 启用无头模式,不弹出浏览器窗口
chrome_options.add_argument("--headless=new")
# 替换为正常浏览器的User-Agent,避免被识别为爬虫
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")

driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.iadfrance.fr/trouver-un-conseiller")
# 等待顾问列表节点加载完成,比固定sleep更高效
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "advisor-card")) # 实际使用时替换为站点对应的顾问卡片类名
    )
    full_page_content = driver.page_source
    with open("demofile2.txt", "w", encoding="utf-8") as f:
        f.write(full_page_content)
finally:
    driver.quit()

注意:爬取数据时请遵守目标站点的robots协议,控制请求频率,避免对站点服务造成不必要的压力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:18:03