Rest 抓取WebObjects网站&;休息
我需要以编程方式与WebObjects网站交互,并从响应中提取数据。我正在抓取的特定WebObjects站点使用组件操作并将会话存储在Cookie(而不是URL)中。这意味着所有URL的外观如下所示:Rest 抓取WebObjects网站&;休息,rest,web-scraping,webobjects,Rest,Web Scraping,Webobjects,我需要以编程方式与WebObjects网站交互,并从响应中提取数据。我正在抓取的特定WebObjects站点使用组件操作并将会话存储在Cookie(而不是URL)中。这意味着所有URL的外观如下所示: http://example.com/WOApp/WebObjects/WOApp.woa/wo/7.0.0.0.29.1.1.1 我的第一个问题是: 这样的URL是否不会完全破坏本地和共享缓存机会(REST中的可缓存约束)?我认为使用此类URL的唯一有效缓存是WebObjects服务器本身 可
http://example.com/WOApp/WebObjects/WOApp.woa/wo/7.0.0.0.29.1.1.1
我的第一个问题是:
- 使用成熟的浏览器客户端与网站(如WatiR或Selenium)交互,并从其响应中提取和处理HTML
- 手动提取动态端点,方法是首先请求它们所在的页面,然后在HTML中找到它们所在的位置。然后在事后使用它们,就好像它们是“静态的”
我对如何处理这种情况的意见很感兴趣,因为我认为上面的任何解决方案都不是特别好。您已经问了很多问题,我将看看是否可以依次回答每个问题 这样的URL不会完全破坏本地和共享缓存吗 机会(REST中的可缓存约束)?我是唯一的 WebObjects服务器本身可以有效地缓存此类URL 事实上,WebObjects应用服务器中有一个页面缓存,您可以正确地观察到,这些组件操作URL可能会阻碍任何其他类型的缓存。此外,即使URL中不存在会话ID,您也需要cookie中的会话ID来重新创建相同的页面,因此仅使用该URL将从应用程序服务器获得会话恢复错误 可寻址性不是也被破坏了吗?每个资源都有一个唯一的 端点,但它不断变化 嗯,是的,表面上看这是真的。您已经给出了一个组件操作URL作为示例,它们与会话相关联 此外,我认为 WebObjects还使太旧的URL无效,因为它们在 一段时间。我不确定这是否只适用于带有 尽管如此 再说一次,都是真的。组件操作URL生成会话和会话超时 现在,让我快速转移一下注意力。我假设您不是WebObjects应用程序的所有者,您正在谈论的是必须刮取WebObjects应用程序,并且您已经确定了此特定应用程序不符合REST原则的一些方式。你完全正确——一个完全基于组件操作的WebObjects应用程序不会是RESTful的。WebObjects的日期提前了几年。话虽如此,WebObjects应用程序有几种完全RESTful的方式:
- 使用sessionless可以提供一定程度的REST行为,并且肯定会解决您在缓存、可寻址性和过期性方面遇到的问题
- 使用创建100%RESTful应用程序
- 正如您所注意到的,应用程序可以很容易地阻止它发生
- 如第53页所述,呈现组件的用户输入和操作调用阶段被跳过,这可能意味着这种方法将仅限于呈现一个没有任何动态内容的组件。这可能对您的使用非常有限,尽管您需要知道您感兴趣的组件名称,并且它们通常不会在任何地方公开