2010-07-06 36 views
2

我正在使用PHP来抓取另一个网站的数据。但是,在某些情况下,我需要确认一个变量(由于有两个非常相似的可能性)。php http post按钮

我应该点击确认我的变量按钮:

<input type="submit" class="buttonEmphasized confirm_nl" name="start" value="Bevestig" accesskey="s" /> 

然而,增加&开始= Bevestig到url似乎并没有解决问题,我收到了同一页。更重要的是,该网站正在使用会话,并且每个http_post_data似乎都开始了一个新会话。

有没有办法让PHP“点击”一个按钮,如果某个输出丢失?

这是一个列车时间表数据抓取系统(使用HAFAS系统)。

干杯

回答

1

没有针对这个问题的通用解决方案。每个网站在某种程度上都有所不同。你最好的选择是分析原始页面发送的http消息。例如,您可以使用firefox + firebug + live http头来完成。这样你就可以看到所有的参数(需要或不需要),然后用你的脚本复制这个消息。

它可能(很可能)需要伪造会话/ cookie数据。你可能需要使用卷曲。

+0

Live header shows me: POST /HAFAS/bin/query.exe/nn?seqnr=2&ident=9p.0622812.1278422598&OK HTTP/1.1 这是一个url编码。复制粘贴该URL给了我相同的页面来确认我的选择。点击提交按钮不会再改变URL(只添加#focus),我可以在不同的浏览器中使用该URL(所以不会与会话相关,只对X时间有效)。但是,我无法真正看到使用哪些变量。 Live http头文件主要显示图像和js文件(显然与布局有关)。任何更好的方式来调查这个? Thx – Tuinslak 2010-07-06 14:00:56

+0

@Tuinslak使用萤火虫。打开Net选项卡,选择第一个查询,你会在那里看到POST标签。数据可能不仅在url中,还必须在post/cookie/session – 2010-07-06 14:10:47

+0

我看到一些cookie信息; http://yeri.be/cd - 所以我拿它,如果我做一个http_post_data到URL并添加cookie数据在$数据它应该工作? – Tuinslak 2010-07-06 14:33:02

-1

“有没有办法让PHP”点击一个按钮,如果某个输出缺失?“

Nop,PHP是服务器端的。使用Javascript

+1

是的,有)你必须得到表单的动作并发送一个http请求到提供的路径并获得响应,从而模拟浏览器的功能。 – 2010-07-06 13:23:22

+0

嗯从来没有想到的,谢谢你的提升 – 2010-07-06 13:24:59

0

如果帖子似乎开始新的会话,我会怀疑你不尊重另一方提供的cookie。

您需要将会话cookie发送回POST请求。

这也是你应该发送你的开始字段的地方。尽管许多页面将接受URL中的参数或发布,但它们不是等同的概念。

+0

我已经设法找到一个URL,我可以复制粘贴多个浏览器。所以显然不是会话/ cookie相关的。 – Tuinslak 2010-07-06 14:02:40