1

我正在为我的班级做一个小项目,我只是一个初学者,所以如果我混淆了我的一些术语,请原谅我。

基本上,我正在为我所在城市的公共交通系统创建一个交互式旅程规划器。不幸的是,他们没有公开我需要的所有数据。因此,我没有把所有时间都花在收集个人使用的数据上,而是选择进行一些屏幕抓取——让他们的服务器根据 START 和 STOP 变量计算旅程信息,然后在我的页面上显示所选信息。

那么是否可以远程填写表单的字段,然后在随后加载的页面上抓取数据?如果是这样,最快、最方便的方法是什么?这恰好是无法通过 URL 操作数据的情况,因此它必须首先通过填写表单来访问数据。

有问题的网站:http: //jp.translink.com.au/travel-information/journey-planner

4

1 回答 1

1

这是您可以执行的操作:

1.)使用类似的数据向 POST 发送请求journey-planner(注意 CORS 可能会加入,然后您可以通过 PHP 或其他方式使用 cURL):

Start:Wickham Tce, Spring Hill
End:Upper Edward St, Spring Hill
SearchDate:10/05/2013 12:00:00 AM
TimeSearchMode:LeaveAfter
SearchHour:7
SearchMinute:40
TimeMeridiem:AM
TransportModes:Bus
TransportModes:Train
TransportModes:Ferry
MaximumWalkingDistance:1500
WalkingSpeed:Normal
ServiceTypes:Regular
ServiceTypes:Express
ServiceTypes:NightLink
FareTypes:Standard
FareTypes:Prepaid
FareTypes:Free

2.) 您将获得一个新的响应位置。这似乎是一个 REST 链接。对你来说重要的是id最后。您必须调用该页面并解析 HTML 并查找div带有 HTML-id的 a option-summaries,您将在divs travel-option-1to中找到更多信息travel-option-n。您必须仔细查看它,以找出存储了哪些信息以及如何使用它。

为了找到这些东西,您应该学习如何使用 Firebug 或 Chrome 的开发工具。

这是解决您的问题的一种方法。可能不是最好的,但仍然比“屏幕抓取”任何东西都要好。但它会要求你大量的技能和努力。此外,如果数据提供者只是稍作改变,您的解决方案将不再有效。此外,它们可能会阻止您通过CORS或其他任何方式访问(阻止您的 IP 等)

于 2013-05-09T19:39:05.760 回答