2
我的問題如下: 我正在嘗試編寫一個通過航空公司票務網站訂購流程的刮板。所以我想抓幾頁,這取決於頁面的結果之前(我希望你明白我的意思)。我至今現在:Python&機械化:如何在連續的頁面上刮取頁面?
import mechanize, urllib, urllib2
url = 'any url'
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11')]
br.open(url)
response = br.response().read()
br.select_form(nr=1)
br.form.set_all_readonly(False)
## now I am reading out the variables of form(nr=1)
for control in br.form.controls:
if not control.name:
print " - (type) =", (control.type)
continue
print " - (name, type, value) =", (control.name, control.type, br[control.name])
## now I am modifying the variables
br['fromdate'] = '2012/11/03'
br['todate'] = '2012/11/07'
## now I am submitting the form and saving the output in the variable bookingsite
response = br.submit()
bookingsite = response.read()
這裏是我的問題:我如何使用變量bookingsite,這又包含了我要修改並提交形式,就像一個正常的網址是什麼?只需設定
br.open(bookingsite)
???還是有另一種修改和提交輸出的方法(然後再次提交輸出並接收新的輸出頁面)?
從'bookingsite'提取數據不應該是一個問題,但我不明白你爲什麼說'bookingsite'會包含一個「表單」。它應該只包含對你提交的表單的HTML響應(即'br.submit()')你能澄清一下嗎? – David
嘿大衛,謝謝你的回覆!這裏是解釋:第一個網站包含一個表格,在這裏你可以輸入諸如出發和到達日期,機場等詳細信息,然後點擊提交,你會看到第二頁(預訂),你可以看到所有飛機在特定日期飛往您選擇的機場。在第二頁上,您需要選擇一個特定的航班(現在該選擇以另一種形式出現,在這種情況下,每個航班/飛機都有單選按鈕)。現在我需要選擇一個,然後再次提交第二個頁面以進入第三個頁面。 – julianschnell
好的 - 那麼你應該可以調用'response.select_form()'並設置單選按鈕,接着是'response.submit()'。 – David