【发布时间】:2021-02-05 07:20:44
【问题描述】:
我注意到我试图抓取的一些网站将我重定向到不同的主机名:https://www.citibank.com.au/ 重定向到例如https://www1.citibank.com.au/。虽然 Scrapy 会抓取常规子域 (www.subdomain.example.com),但它会跳过 www2.example.com。
这显然是 Scrapy 应该如何工作的:https://doc.ebichu.cc/scrapy/ 那:
异地中间件 classescrapy.spidermiddlewares.offsite.OffsiteMiddleware 过滤掉 对蜘蛛所覆盖域之外的 URL 的请求。
这个中间件过滤掉所有主机名不在的请求 蜘蛛的 allowed_domains 属性。任何域的所有子域 在列表中也是允许的。例如。规则www.example.org 也将 允许 bob.www.example.org 但不允许 www2.example.com 或 example.com。
我的问题是:如何确保所有具有不同主机名(例如 www2.example.com)的子域都被抓取?
我能想到的解决方案是使用 URL 的所有变体(例如 [www.example.com、www1.example.com、www2.example.com 等])填充允许的域列表。这是要走的路,还是我在 Scrapy 文档中忽略的任何选项可以更好地解决这个问题?
【问题讨论】:
标签: python web-scraping scrapy