问题描述
我正在尝试抓取网站,如果我在自己的本地服务器上运行我的代码,结果如预期,但如果我部署到 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 进行抓取的更多信息。