从websi抓取密钥

2024-09-30 01:36:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经从以下网站(代表圣保罗-巴西的巴士路线)下载了所有文件: http://www.cruzalinhas.com/linha.json?key=12967 想知道有没有更优雅的方式来做这件事。在

基本上,我所做的是对00000到99999之间的所有值执行一个循环,将这个数字替换为 http://www.cruzalinhas.com/linha.json?key=##### 检查网站是否存在,如果存在,则下载。在

有没有办法在所有的钥匙之前就知道,以便使这项工作更有效率?在

我有所有的文件,但这是一个非常常见的问题,我想知道是否有一个捷径来解决它。在


Tags: 文件keycomjsonhttp网站www方式
1条回答
网友
1楼 · 发布于 2024-09-30 01:36:07

我是Cruzalinhas的创造者,并提前为没有(尚未)将网站从葡萄牙语翻译成英文而道歉,否则会使这些问题更清楚(而且答案更短)。

正如您可能注意到的,这些数据显示了圣保罗的公交车、地铁和火车的运输路线,这样就更容易找到与连接规划路线的连接(谷歌地图和其他人会自动找到,有时会丢失通过更具互动性搜索找到的路线)。

它使用geohashes在路线之间进行“廉价”的接近搜索,并从圣保罗运输公司(SPTrans)中获取数据。

回答第一个问题:这些ID是来自原始站点的ID。但是,它们并不是很稳定(我看到他们删除旧ID,只因为线路改变了路由而更换了新ID),所以Cruzalinhas不时进行一次完全爬网并更新整个数据库(我会完全替换它,但Google应用引擎使它比平时更难)。

好消息:该网站是开放源码(http://github.com/chesterbr/cruzalinhas)的MIT许可证。文档仍然是葡萄牙语,但是您将主要对命令行爬虫^{}感兴趣。

获取数据的最有效方法是^{cd2>},然后^{{cd3>},然后^{{cd4>}并从那里导入。还有更多选项,下面是帮助屏幕的快速翻译:

Downloads and parses data from public transportation routes from the SPTrans
website.

It parses HTML files and stores the result in the linhas.sqlite file, which
can be used in other applications, converted to JSON or used to update
cruzalinhas itself.

Commands:
info          Shows the number of pending updates
download [id] Downloads HTML files from SPTrans (all or starting with id)
resume        Continues the download from the last line saved.
parse         Reads downloaded HTMLs and (soft) inserts/updates/deletes in
              the database.
list          Outputs a JSON with the route IDs from the database.
dump [id]     Outputs a JSON with all routes in the database (or just one)
hashes        Prints a JSON with the geohashes for each line (mapping to
              the routes that cross the hash)
upload        Uploads the pending changes in the database to cruzalinhas.

请记住,即使这是公共信息,并且它们是legally obliged要这样做,也不在SPTrans同意下获取。网站和刮板是在数字信息法通过之前(尽管已经有关于公共服务信息提供的立法,但在此过程中没有进行任何非法行为,或者如果你负责任地使用它,也不会采取任何非法行为),以此作为抗议。

为此(而且由于后端有点…)“受到挑战”),scaraper非常小心地限制请求,以避免服务器过载。它使爬行的跨度接近几个小时,但您不想过载服务(这可能会迫使他们阻塞您,甚至更改站点,使爬行更困难)。

我最终将对该代码进行完全重写(可能是我几年前编写的第一个Python/App引擎代码,并快速破解了这个公共数据在SPTrans网站之外的有用性)。它将有一个更健全的爬行过程,应该使最新的数据可以下载一次单击,并可能使完整的行列表在API上可用。

现在,如果您只想最后一次爬行(我在一两个月前做过),请与我联系,我很乐意向您发送sqlite/JSON文件。

相关问题 更多 >

    热门问题