import requests
# 使用 ScreenshotAPI 或类似服务截图
# 替换为实际 API key 和 URL
url = "https://example.com"
api_key = "your_api_key"
# 全屏截图(桌面端)
response = requests.get(
"https://api.screenshotapi.io/capture",
params={
"url": url,
"full_page": True,
"viewport": "1920x1080",
"api_key": api_key
}
)
# 保存为 PNG
if response.status_code == 200:
with open("screenshot.png", "wb") as f:
f.write(response.content)
print("截图已保存为 screenshot.png")
else:
print(f"截图失败: {response.status_code}")
# 移动端模拟截图
response_mobile = requests.get(
"https://api.screenshotapi.io/capture",
params={
"url": url,
"full_page": False,
"viewport": "375x812", # iPhone X 尺寸
"api_key": api_key
}
)
if response_mobile.status_code == 200:
with open("screenshot_mobile.png", "wb") as f:
f.write(response_mobile.content)
print("移动端截图已保存为 screenshot_mobile.png")
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
// 使用 ScreenshotAPI 或类似服务截图
url := "https://example.com"
apiKey := "your_api_key"
// 全屏截图
req, _ := http.NewRequest("GET", "https://api.screenshotapi.io/capture", nil)
q := req.URL.Query()
q.Add("url", url)
q.Add("full_page", "true")
q.Add("viewport", "1920x1080")
q.Add("api_key", apiKey)
req.URL.RawQuery = q.Encode()
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("请求失败:", err)
return
}
defer resp.Body.Close()
if resp.StatusCode == 200 {
file, _ := os.Create("screenshot.png")
defer file.Close()
io.Copy(file, resp.Body)
fmt.Println("截图已保存为 screenshot.png")
} else {
fmt.Printf("截图失败: %d\n", resp.StatusCode)
}
// 移动端模拟截图
reqMobile, _ := http.NewRequest("GET", "https://api.screenshotapi.io/capture", nil)
qMobile := reqMobile.URL.Query()
qMobile.Add("url", url)
qMobile.Add("full_page", "false")
qMobile.Add("viewport", "375x812")
qMobile.Add("api_key", apiKey)
reqMobile.URL.RawQuery = qMobile.Encode()
respMobile, _ := client.Do(reqMobile)
defer respMobile.Body.Close()
if respMobile.StatusCode == 200 {
fileMobile, _ := os.Create("screenshot_mobile.png")
defer fileMobile.Close()
io.Copy(fileMobile, respMobile.Body)
fmt.Println("移动端截图已保存为 screenshot_mobile.png")
}
}
// 使用 Puppeteer 在 Node.js 中截图
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// 设置移动端模拟
await page.setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15');
await page.setViewport({ width: 375, height: 812 });
// 访问页面
await page.goto('https://example.com', { waitUntil: 'networkidle0' });
// 全屏截图(包含滚动区域)
await page.screenshot({
path: 'screenshot_full.png',
fullPage: true
});
console.log('全屏截图已保存为 screenshot_full.png');
// 视口截图(仅当前屏幕可见区域)
await page.screenshot({
path: 'screenshot_viewport.png',
fullPage: false
});
console.log('视口截图已保存为 screenshot_viewport.png');
await browser.close();
})();