python - 如何查找某个 URL 下的所有网站。
问题描述
我真的很想知道如何找到某个 URL 下的所有网站。例如,我有一个https://ab/c的 URL ,我想找到它下面的所有网站,例如https://ab/c/d和https://ab/c/d/e。有一些方法可以做到这一点吗?非常感谢!
解决方案
如果页面与来自根页面的超链接相互连接,您可以通过跟踪内部链接轻松地爬取站点。这将要求您加载根页面,解析其超链接,加载这些页面并重复,直到没有检测到新链接。您将需要实施循环检测以避免抓取您已经抓取的页面。蜘蛛的礼貌操作并非易事;许多站点通过 robots.txt 文件或其他方式公开元数据,以表明他们不希望将其站点的哪些部分编入索引,并且它们可能会运行缓慢以避免消耗过多的服务器资源。你应该尊重这些规范。
但是,请注意,如果没有从站点明确链接,则没有通用方法可以枚举所有页面。这样做需要:
- 该站点启用目录列表,因此您可以识别存储在这些路径上的所有文件。大多数网站不提供此类服务;或者
- 与网站运营商或网络服务器合作以查找这些路径下列出的所有页面;或者
- 对这些路径下所有可能的 URL 进行暴力搜索,这是一个有效的无界集合。实施这样的搜索对网站的运营商来说是不礼貌的,在时间和精力方面是令人望而却步的,而且不可能详尽无遗。
推荐阅读
- c - 是否有等效于 C 的 python 中的“in”关键字
- xamarin - Xamarin,为什么我的 if/else 语句不能从 Settings.plugin 检索数据
- sql - SQL 选择记录,其中一个表中的两个值都作为子字符串出现在第二个表的文本字段中
- unity3d - 实例化刚体不改变体型
- c# - 如何将 linq-to-sql 与引用一起使用?
- ios - UIPageViewController 点不显示
- android - 在recyclerview中加载第一项之后的第一项
- python - 如何将字典转换为字符串?
- java - 是否可以指定一个带有小数值的 Java 堆,比如 6.5?
- python - 因此,当我通过 jenkins 运行我的 python selenium 脚本时,我应该如何编写'driver = webdriver.Chrome()'?