2010-07-06 87 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