2009-08-21 68 views
2

如果您現在訪問this link,您可能會收到VBScript錯誤。我該如何刮這個框架?

另一方面,如果您訪問this link first,然後上述鏈接(在同一會話中),頁面會通過。

這個應用程序設置的方式,第一頁是作爲第二(主)頁面中的框架。如果你點擊一下,你會看到它是如何工作的。

我的問題:我如何用Python刮第一頁?我試過了我能想到的所有東西 - urllib,urllib2,機械化 - 我得到的只有500個錯誤或超時。

我懷疑答案在於機械化,但是我的mechanize-fu不足以解決這個問題。誰能幫忙?

回答

8

它始終歸結爲請求/響應模型。您只需製作一系列http請求,以獲得所需的響應。在這種情況下,您還需要服務器將每個請求視爲同一會話的一部分。要做到這一點,您需要弄清楚服務器如何跟蹤會話。這可能是許多事情,從cookie到隱藏輸入以形成操作,發佈數據或查詢字符串。如果我不得不猜測在這種情況下我會把錢放在cookie上(我沒有檢查鏈接)。如果這是真的,你需要發送第一個請求,保存你找回的cookie,然後發送該cookie以及第二個請求。

也可能是,初始頁面將有按鈕和鏈接,讓你到第二頁。這些鏈接將有類似<A href="http://cad.chp.ca.gov/iiqr.asp?Center=RDCC&LogNumber=0197D0820&t=Traffic%20Hazard&l=3358%20MYRTLE&b=">的地方,其中很多gobbedlygook是由第一頁生成的。

"Center=RDCC&LogNumber=0197D0820&t=Traffic%20Hazard&l=3358%20MYRTLE&b="部分對您必須從第一頁獲取的某些會話信息進行編碼。

而且,當然,您甚至可能需要同時做這兩件事。

+0

感覺需要編輯這個最優秀的答案,包括URL會話跟蹤以及cookie會話跟蹤。 – 2009-08-21 21:03:30

+0

謝謝你把我推向正確的方向。你用cookie處理概述的方法是完全正確的解決方案,對我來說,答案是手動處理機械化cookie [如此處所述] [1]。 [Et瞧!] [2] [1] http://wwwsearch.sourceforge.net/mechanize/doc.html [2] http://twitter.com/humboldtCHP – hanksims 2009-08-22 06:24:33

1

除機械化之外,您還可以嘗試BeautifulSoup。我並不積極,但你應該能夠將DOM解析到框架頁面中。

我還發現Tamper Data是我寫刮板時相當有用的插件。