在 GCP VM 上使用请求 python 抓取时缺少一些标签 HTML

问题描述

我正在尝试抓取网站,如果我在自己的本地服务器上运行我的代码,结果如预期,但如果我部署到 GCP 虚拟机,一些 HTML 标记会丢失。我已确保本地和 GCP 上的源代码相同。

有趣的是,如果我更改标题,则会丢失更多标签。到目前为止,我发现这些标题效果最好:

headers = {
"User-Agent": "Mozilla/5.0 (iPhone; cpu iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML,like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.141","Content-Type": "application/x-www-form-urlencoded","Connection": "keep-alive"}

标签丢失问题是由发送的标头引起的,还是由 GCP 虚拟机中发生的其他事情引起的?

解决方法

回顾在评论中完成的故障排除:

  • GCP 本身不会过滤标头。
  • 根据网站的不同,抓取结果可能会因 IP 不同而有所不同。
  • 如果您发现本地和 GCP 上的转储之间存在任何差异,请确保代码和所有依赖项都相同。

您可以找到有关从 GCP here 进行抓取的更多信息。