0
我想創建一個簡單的網絡機器人,它將訪問某個頁面,填寫和提交表單數據,然後打印提交時重定向到的頁面。然而,我的resp.read()調用不斷打印最初的表單提交頁面。Python網絡機器人(urllib)
這裏的頁面,我的代碼:
<html>
<body>
<P>Welcome <BR><P>Please answer the question <BR><P>98270+88340= ?
<form name="loginform" method="post" action="vote.php">
<input name="sum" type="text" id="sum" />
<input type="submit" name="Submit" value="POST Answer">
</form></body>
import urllib
import urllib2
import lxml.html as lh
#parse the operands
url='hidden'
parr=lh.parse(url).xpath('//p/text()')
elem=parr[2]
op1=int(elem[0:5])
op2=int(elem[6:11])
sum=op1+op2
print sum
sum=str(sum)
#request values
values = {
"sum": sum,
"Submit": "POST Answer"
}
#encode for transmssion
data = urllib.urlencode(values)
request = urllib2.Request(url, data)
resp=urllib2.urlopen(request)
#receive response
print resp.read()
resp.close()
我使用LXML爲HTML解析。它返回正確的總和。
查看[機械化模塊](http://wwwsearch.sourceforge.net/mechanize/),它使這更容易。 – samplebias 2011-05-04 22:36:17
感謝您的建議;我得到它與機械化 – Leif 2011-05-04 23:02:55
你應該把這個:http://stackoverflow.com/revisions/801745a8-0bc0-4c9b-be05-595283e5be39/view-source並使其成爲你自己的問題的實際答案 - 不要編輯出你的問題,這對其他人來說很有用! – 2011-05-04 23:19:36