如何使用Python requests获取Chrome开发者工具Network面板的资源链接
实现思路
要拿到该页面Network面板展示的静态资源链接,无需使用浏览器驱动,直接通过解析HTML提取所有资源引用、再补全绝对路径即可实现,具体实现逻辑和代码如下:
代码实现
首先需要导入urllib.parse模块处理相对路径转绝对路径,完整代码:
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin login_url = "https://the-internet.herokuapp.com/login" # 用set存储自动去重 resource_urls = set() with requests.session() as s: # 请求登录页HTML r = s.get(login_url) soup = BeautifulSoup(r.content, "html.parser") # 提取link标签资源(css、图标等) for link in soup.find_all("link", href=True): full_url = urljoin(login_url, link["href"]) resource_urls.add(full_url) # 提取script标签的js资源 for script in soup.find_all("script", src=True): full_url = urljoin(login_url, script["src"]) resource_urls.add(full_url) # 提取img标签的图片资源 for img in soup.find_all("img", src=True): full_url = urljoin(login_url, img["src"]) resource_urls.add(full_url) # 可选:添加页面本身的请求链接(对应Network里的doc类型文件) resource_urls.add(login_url) # 输出所有资源链接 for url in sorted(resource_urls): print(url)
补充说明
- 上述方案仅能获取首次HTML返回中直接引用的静态资源,如果页面存在JavaScript动态加载的异步资源(比如页面加载完成后JS发起的接口请求、动态插入的资源),纯requests方案无法捕获,这类场景才需要使用无头浏览器工具。
- 测试上述代码针对目标页面的输出结果,和Chrome Network面板首次加载展示的静态资源完全一致。
内容的提问来源于stack exchange,提问作者GrantWard101
相关产品推荐
相关产品推荐

