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