1

总体目标是在以下网页http://www.cma-cgm.com/eBusiness/Tracking/Default.aspx上执行搜索,容器值为 CMAU1173561。我尝试了两种方法,php 扩展 cURL 和 python 的机械化。接近的 php 涉及使用页面上的输入字段执行 POST 提交(注意:这些在 asp.net 页面上真的很难看)。返回的页面不包含任何搜索结果。第二种方法涉及使用 python 的 mechanize 模块。在这种方法中,我加载页面,选择表单,然后将文本字段 ctl00$ContentPlaceBody$TextSearch 更改为容器值。当我再次加载响应时,没有搜索结果。

我真的处于死胡同。任何帮助将不胜感激,因为就目前而言,我的下一步是成为我不喜欢的 asp.net 专家。

4

1 回答 1

0

该页面的来源非常可怕(巨大的视图状态、到处都是表格、内联 CSS、看起来像是从 Word 中复制的样式)。

无论如何......一个 ASP.Net 表单仍然像任何其他表单一样将相同的原始数据传递给服务器(尽管它被抽象给开发人员)。

您很可能会丢失与请求一起使用的 cookie。如果搜索页面(或站点的​​任何部分)使用会话状态,则 ASP.Net 会话 cookie 必须包含在请求中。您将能够从它的名称(包含“asp.net”和“session”)中看出它。

我假设您在提交页面时使用了 Firebug 或 Chrome 之类的工具来查看完整的传出请求。从我的快速测试来看,该请求似乎可以使用 GET 而不是 POST 来执行。我提交了一个表单,查看了请求,然后将 URL 粘贴到了一个新的浏览器窗口中。

例子:http://www.cma-cgm.com/eBusiness/Tracking/Default.aspx?ContNum=CMAU1173561&T=57201202648

这可能就是您需要做的所有事情。

于 2012-09-26T06:58:36.947 回答