我期望能夠在該腳本將運行的計算機上查詢站點的保修信息。如果需要的話,它應該能夠填寫表格(就像惠普的服務網站那樣),然後就可以檢索生成的網頁。Python urllib2自動填寫表單並檢索結果
我已經有了一些位來解析報告的結果html我只是遇到了麻煩,需要做什麼才能做一個POST的數據需要放在字段中,然後能夠檢索結果頁面。
我期望能夠在該腳本將運行的計算機上查詢站點的保修信息。如果需要的話,它應該能夠填寫表格(就像惠普的服務網站那樣),然後就可以檢索生成的網頁。Python urllib2自動填寫表單並檢索結果
我已經有了一些位來解析報告的結果html我只是遇到了麻煩,需要做什麼才能做一個POST的數據需要放在字段中,然後能夠檢索結果頁面。
我只是做了這一點,但是:
name
屬性。urllib.urlencode
將字典轉換爲您的發佈請求的正文。urllib2.Request()
的第二個參數包含在表單應提交到的URL之後。服務器將返回結果網頁,或返回重定向到生成的網頁。如果是後者,則需要向重定向響應中指定的URL發出GET
請求。
我希望能有某種意義?
如果你絕對需要使用的urllib2,基本要點是:
import urllib
import urllib2
url = 'http://whatever.foo/form.html'
form_data = {'field1': 'value1', 'field2': 'value2'}
params = urllib.urlencode(form_data)
response = urllib2.urlopen(url, params)
data = response.read()
如果你沿着POST數據(第二個參數urlopen()
)發送請求的方法將自動設置爲POST。
我建議你自己幫忙,並使用mechanize,這是一個完全成熟的urllib2替代品,其功能與真正的瀏覽器完全相同。很多網站都使用隱藏字段,cookie和重定向,默認情況下,urllib2都不會爲您處理這些內容,機械化的作用就在此處。
退房Emulating a browser in Python with mechanize就是一個很好的例子。
我也會投入機械化。我已經使用過很多次了。真的很有用,比urllib和urllib2更容易做複雜的事情。 – 2011-04-14 20:33:43
我同意。機械化是做這件事的標準工具。除非你絕對必須,否則不要使用urllib2。 – 2011-04-14 20:42:58