我已经从以下网站(代表圣保罗-巴西的巴士路线)下载了所有文件: http://www.cruzalinhas.com/linha.json?key=12967 想知道有没有更优雅的方式来做这件事。在
基本上,我所做的是对00000到99999之间的所有值执行一个循环,将这个数字替换为 http://www.cruzalinhas.com/linha.json?key=##### 检查网站是否存在,如果存在,则下载。在
有没有办法在所有的钥匙之前就知道,以便使这项工作更有效率?在
我有所有的文件,但这是一个非常常见的问题,我想知道是否有一个捷径来解决它。在
我是Cruzalinhas的创造者,并提前为没有(尚未)将网站从葡萄牙语翻译成英文而道歉,否则会使这些问题更清楚(而且答案更短)。
正如您可能注意到的,这些数据显示了圣保罗的公交车、地铁和火车的运输路线,这样就更容易找到与连接规划路线的连接(谷歌地图和其他人会自动找到,有时会丢失通过更具互动性搜索找到的路线)。
它使用geohashes在路线之间进行“廉价”的接近搜索,并从圣保罗运输公司(SPTrans)中获取数据。
回答第一个问题:这些ID是来自原始站点的ID。但是,它们并不是很稳定(我看到他们删除旧ID,只因为线路改变了路由而更换了新ID),所以Cruzalinhas不时进行一次完全爬网并更新整个数据库(我会完全替换它,但Google应用引擎使它比平时更难)。
好消息:该网站是开放源码(http://github.com/chesterbr/cruzalinhas)的MIT许可证。文档仍然是葡萄牙语,但是您将主要对命令行爬虫^{} 感兴趣。
获取数据的最有效方法是^{cd2>},然后^{{cd3>},然后^{{cd4>}并从那里导入。还有更多选项,下面是帮助屏幕的快速翻译:
请记住,即使这是公共信息,并且它们是legally obliged要这样做,也不在SPTrans同意下获取。网站和刮板是在数字信息法通过之前(尽管已经有关于公共服务信息提供的立法,但在此过程中没有进行任何非法行为,或者如果你负责任地使用它,也不会采取任何非法行为),以此作为抗议。
为此(而且由于后端有点…)“受到挑战”),scaraper非常小心地限制请求,以避免服务器过载。它使爬行的跨度接近几个小时,但您不想过载服务(这可能会迫使他们阻塞您,甚至更改站点,使爬行更困难)。
我最终将对该代码进行完全重写(可能是我几年前编写的第一个Python/App引擎代码,并快速破解了这个公共数据在SPTrans网站之外的有用性)。它将有一个更健全的爬行过程,应该使最新的数据可以下载一次单击,并可能使完整的行列表在API上可用。
现在,如果您只想最后一次爬行(我在一两个月前做过),请与我联系,我很乐意向您发送sqlite/JSON文件。
相关问题 更多 >
编程相关推荐