使用Python Selenium获取网站全路径页面完整源码的方法问询
域名下全量可访问页面源码提取方案
方案1:使用现成工具(无需写代码,门槛低)
- wget(全平台通用命令行工具)
一行命令即可实现整站爬取并自动保存源码,命令如下:wget -r -p -k -np -E https://你的目标域名.com
参数说明:-r 开启递归爬取 | -p 下载页面所有关联资源 | -k 转换链接为本地路径 | -np 不爬取父级目录避免跳出目标域名 | -E 给无后缀的页面自动添加.html后缀
爬取完成后所有页面源码会自动存储到以目标域名为名的本地文件夹中,路径结构和线上完全一致。 - HTTrack(可视化桌面工具)
支持Windows/macOS/Linux系统的图形化工具,打开后输入目标域名、选择本地保存路径,按照向导提示点击下一步即可自动爬取全站源码,还支持自定义爬取深度、排除指定后缀文件,适合不会操作命令行的用户。
方案2:自定义代码实现(适合有开发能力、需要定制规则的场景)
Python可以用requests+BeautifulSoup组合快速实现,核心逻辑简单易修改:
- 定义种子URL(目标域名首页),维护已爬URL集合避免重复爬取
- 每次请求URL拿到响应后,按照线上路径结构把源码存储到本地
- 解析当前页面内的所有站内链接,加入待爬队列循环执行即可
核心代码片段示例:
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin, urlparse base_url = "https://你的目标域名.com" crawled = set() def crawl(url): if url in crawled: return crawled.add(url) resp = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"}) # 按线上路径规则保存源码到本地 path = urlparse(url).path.strip("/") or "index.html" with open(path, "w", encoding="utf-8") as f: f.write(resp.text) # 提取站内链接继续爬取 soup = BeautifulSoup(resp.text, "html.parser") for a_tag in soup.find_all("a", href=True): full_url = urljoin(base_url, a_tag["href"]) if urlparse(full_url).netloc == urlparse(base_url).netloc: crawl(full_url) if __name__ == "__main__": crawl(base_url)
注意事项
- 爬取前请确认你对目标域名拥有合法的爬取权限,遵守目标站点的
robots.txt规则和相关法律法规,不要高频请求导致站点服务器压力过大 - 如果目标站点有反爬机制,可以通过添加请求间隔、替换User-Agent、使用代理池等方式适配
内容的提问来源于stack exchange,提问作者Cameron Stark
相关产品推荐
相关产品推荐

