第 6 章 抓取挑战和解决方案

在本章中,我们将介绍:

  • 重试失败的页面下载

  • 支持页面重定向

  • 在 Selenium 中等待内容可用

  • 将抓取限制在单个域内

  • 处理无限滚动页面

  • 控制抓取深度

  • 控制抓取长度

  • 处理分页网站

  • 处理表单和基于表单的授权

  • 处理基本授权

  • 通过代理进行抓取防止的禁止行为

  • 随机化用户代理

  • 缓存响应

开发一个可靠的抓取工具从来都不是一件容易的事,我们需要考虑很多假设。 如果网站瘫痪了怎么办? 如果响应返回意外数据怎么办? 如果您的 IP 被限制或封锁怎么办? 如果需要认证怎么办? 虽然我们永远无法预测和涵盖所有假设,但我们将讨论一些常见的陷阱、挑战和解决方法。

请注意,其中一些示例需要访问我作为 Docker 容器提供的网站。 它们比我们在前面章节中使用的简单静态站点需要更多的逻辑。 因此,您需要使用以下 Docker 命令拉取并运行 Docker 容器:

docker pull mheydt/pywebscrapecookbook
docker run -p 5001:5001 pywebscrapecookbook