第 6 章 抓取挑战和解决方案
在本章中,我们将介绍:
-
重试失败的页面下载
-
支持页面重定向
-
在 Selenium 中等待内容可用
-
将抓取限制在单个域内
-
处理无限滚动页面
-
控制抓取深度
-
控制抓取长度
-
处理分页网站
-
处理表单和基于表单的授权
-
处理基本授权
-
通过代理进行抓取防止的禁止行为
-
随机化用户代理
-
缓存响应
开发一个可靠的抓取工具从来都不是一件容易的事,我们需要考虑很多假设。 如果网站瘫痪了怎么办? 如果响应返回意外数据怎么办? 如果您的 IP 被限制或封锁怎么办? 如果需要认证怎么办? 虽然我们永远无法预测和涵盖所有假设,但我们将讨论一些常见的陷阱、挑战和解决方法。
请注意,其中一些示例需要访问我作为 Docker 容器提供的网站。 它们比我们在前面章节中使用的简单静态站点需要更多的逻辑。 因此,您需要使用以下 Docker 命令拉取并运行 Docker 容器:
docker pull mheydt/pywebscrapecookbook
docker run -p 5001:5001 pywebscrapecookbook