使用scrapy爬网SSL站点

Has*_*aza 5 python ssl scrapy

我要抓取使用scrapy框架使用TLS v1.2的https://dms.psc.sc.gov/Web/dockets.但是在请求URL时,它无法加载和提升[<twisted.python.failure.Failure <class 'OpenSSL.SSL.Error'>>].

在git https://github.com/scrapy/scrapy/issues/981上讨论了一个问题,但它对我不起作用.我有scrapy v 0.24.5和扭曲版本> = 14.

当我尝试抓取另一个也使用TLS v1.2的网站时,它可以正常工作,但不适用于https://dms.psc.sc.gov.如何解决这个问题?

Paw*_*ech 5

在Scrapy中修复此问题的PR已经合并.最近(在2016年2月)有另一个拉动请求修复类似的错误

我看到最新的Scrapy版本我可以正确地获取您的页面,但是旧版本的问题仍然存在.

一般来说,如果你偶然发现Scrapy的HTTP-s问题,解决方案是:

  • 将Scrapy升级到最新版本
  • 检查你使用的Twisted版本,如果它不是最新的Twisted版本的更新版本(截至编写14版本时,确认在SSL方面明显更好)

如果您在更新Scrapy和Twisted后仍然遇到问题,则可能需要继承ScrapyClientContextFactory - 请参阅下面的答案以获取详细信息.

这个github问题的更多细节

  • 在版本1.0.5上我仍然有这个问题 (2认同)