我有一个网页表单,我希望通过python bot通过用户填写。我能找到的关于此的所有内容都通过请求或机制从预定义的有效负载中提取所有数据,但是我的情况不同之处在于我希望用户能够使用自己的文本触发它(例如 - .submit门票#1234 - Blah blah blah)。
他们提交的页面是一个简单的表单 - 1个文本区域和1个提交按钮。
任何人都可以对某些教程有所了解或者我会如何解决这个问题?
这是我的尝试:
import re
import urllib.parse
import requests
from lxml import etree
@hook.command("addquote")
def addquote(text, bot):
"""<query> -- adds a quote to the qdb."""
url = 'example.com/?add';
values = {'addquote' : text}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
谢谢!
答案 0 :(得分:0)
以下是使用HTTP POST的示例。如果您的Web表单使用PUT,只需更改方法即可。它输出返回的页面(除非您想检查成功,否则可能不需要)以及HTTP状态代码和原因。这是Python 3,旧版本只需要进行小的更改:
import urllib.parse, urllib.request
url="http://hskhsk.pythonanywhere.com/cidian"
params={"q":"apple","secondparam":"ignored"}
encoded=urllib.parse.urlencode(params)
data=bytes(encoded, 'utf-8')
req = urllib.request.Request(url=url, data=data, method="POST")
with urllib.request.urlopen(req) as f:
print(f.read().decode('utf-8'))
print(f.status)
print(f.reason)
它调用的Web表单是一个简单的英汉词典,它接受HTTP GET或POST请求。搜索(apple)的文本是q
参数,其他参数将被忽略。
答案 1 :(得分:0)
答案 2 :(得分:0)
这是一个非常简单的例子,使用Grablib:
# we will use GrabLib (http://docs.grablib.org/en/latest/)
from grab import Grab
g = Grab()
g.go ('someurl.com')
g.set_input ('form name', 'text to be inputted')
g.submit
多数民众赞成)