同一URL对应不同网页的爬虫难题求解(以高露洁官网为例)
爬取同一URL下多标签页人员数据的解决方案
针对你遇到的高露洁官网同一URL对应多标签页内容的问题,以下是两种可行的解决思路:
方法1:直接抓取后端接口数据
这类单页应用(SPA)切换标签时,通常会通过AJAX/Fetch请求后端接口获取对应数据,不用模拟页面交互,效率更高:
- 打开浏览器开发者工具(F12),切换到「网络」面板,勾选「XHR/Fetch」筛选器
- 依次点击「公司副总裁」和「领导团队」标签,观察面板中出现的请求,找到返回人员列表数据的接口
- 直接向该接口发送请求(需带上必要请求头,如
User-Agent、Referer,避免被反爬拦截),接口返回的JSON数据中会包含两类人员的姓名、职位信息,直接解析即可
方法2:模拟浏览器交互渲染页面
如果无法定位到独立接口,可使用无头浏览器工具模拟标签点击,等待内容加载后抓取:
以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.colgatepalmolive.com/en-us/who-we-are/our-leadership-team") # 抓取「公司副总裁」板块数据 page.click("text=公司副总裁") page.wait_for_selector(".leadership-team__member") # 匹配人员卡片的选择器,需根据页面实际调整 vp_members = page.query_selector_all(".leadership-team__member") for member in vp_members: name = member.query_selector(".leadership-team__name").text_content().strip() title = member.query_selector(".leadership-team__title").text_content().strip() print(f"姓名:{name},职位:{title}") # 抓取「领导团队」板块数据 page.click("text=领导团队") page.wait_for_selector(".leadership-team__member") team_members = page.query_selector_all(".leadership-team__member") for member in team_members: name = member.query_selector(".leadership-team__name").text_content().strip() title = member.query_selector(".leadership-team__title").text_content().strip() print(f"姓名:{name},职位:{title}") browser.close()
注意:代码中的元素选择器(如.leadership-team__member)需要根据页面实际DOM结构调整,可通过浏览器开发者工具的「元素」面板定位。
关于独立URL的说明
这类SPA页面的标签切换属于前端动态渲染逻辑,官方不会提供对应独立URL。若需实现类似独立访问的效果,可自行在URL后添加哈希参数(如#vice-presidents或#leadership-team),并在爬取逻辑中判断哈希值,自动触发对应标签的点击操作,但这并非官方原生的独立URL。
内容的提问来源于stack exchange,提问作者wanttoimprove
相关产品推荐
相关产品推荐

