503表示服务器暂时无法处理某一请求。这既有可能是服务器过载导致的,也有可能是服务器屏蔽了你的请求。首先一点,你需要确认目标网站有没有禁止爬虫访问(最简单的方法是查询robots.txt)。一般建议尊重网站的设置。
Be polite.其次,如果是因为服务器过载导致503,请降低爬虫的并发访问数量,并且延长各个请求之间的间隔时间(比如设置为10-20分钟)。
最复杂的情况是,网站设置了爬虫陷阱。取决于具体设置,这里面的情况千差万别——通常可以采取的应对措施包括降低并发数量(别表现的那么像机器)、更换user-agent设置、更换访问IP等。
这种情况本质上需要个例分析,另外,题主是自己写的爬虫还是应用的第三方库?对于“程序不跑也不结束”这个情况,如果是后者,建议调阅log(有的库可能需要调用python的标准logging库)然后查询库文档。
如果是前者,可以考虑加入更为细致的状态查询记录功能并相应调试(比如,是不是卡在某个人机验证页面上了?)