使用 Python 登录网站,填写表格,然后退出
Posted
技术标签:
【中文标题】使用 Python 登录网站,填写表格,然后退出【英文标题】:Using Python to sign into website, fill in a form, then sign out 【发布时间】:2012-01-23 13:28:19 【问题描述】:为了更好地使用 Python,我现在正尝试登录我经常访问的网站,给自己发送一条私人消息,然后退出。到目前为止,我已经成功登录(使用 urllib、cookiejar 和 urllib2)。但是,我无法弄清楚如何填写所需的表格以向自己发送消息。
该表单位于 /messages.php?action=send。要发送消息,需要填写三项内容:三个文本字段,分别命名为名称、标题和消息。此外,还有一个提交按钮(名为“提交”)。
我如何填写并发送此表格?
【问题讨论】:
Fill form values in a web page via a Python script (not testing)的可能重复 【参考方案1】:要将数据发布到网页,请使用类似这样的 cURL,
curl -d Name="Shrimant" -d title="Hello world" -d message="Hello, how are you" -d Form_Submit="Send" http://www.example.com/messages.php?action=send
“-d”选项告诉 cURL 下一项是要发送到服务器 http://www.example.com/messages.php?action=send 的一些数据
【讨论】:
【参考方案2】:您可以使用 mechanize 轻松处理此问题。这将简化您提交表单的工作。不要忘记通过查看html表单的源代码来检查名称,标题,消息等参数。
import mechanize
br = mechanize.Browser()
br.open("http://mywebsite.com/messages.php?action=send")
br.select_form(nr=0)
br.form['name'] = 'Enter your Name'
br.form['title'] = 'Enter your Title'
br.form['message'] = 'Enter your message'
req = br.submit()
【讨论】:
【参考方案3】:尝试计算发出的请求(例如,使用 Chrome Web 开发人员工具或使用 Firefox/Firebug)并模仿包含所需表单数据的 POST 请求。
除了 Andrew 提到的出色的 mechanize 库之外,我还建议您使用 BeautifulSoup 来解析 HTML。
如果您不想使用 mechanize 但仍想要一个简单、干净的解决方案来创建 HTTP 请求,我建议您使用出色的 requests 模块。
【讨论】:
【参考方案4】:import urllib
import urllib2
name = "name field"
data =
"name" : name
encoded_data = urllib.urlencode(data)
content = urllib2.urlopen("http://www.abc.com/messages.php?action=send",
encoded_data)
print content.readlines()
只需将http://www.abc.com/messages.php?action=send
替换为您提交表单的网址
回复你的评论:如果url是你的表单所在的url,而你只需要对一个网站做这个,查看页面的源代码并找到
<form method="POST" action="some_address.php">
并把这个地址作为urllib2.urlopen
的参数
您必须了解submit
按钮的作用。
它只是向表单中action
定义的url 发送Http
请求。
所以你要做的就是用urllib2
模拟这个请求
【讨论】:
哎呀,对不起。它是表单所在的页面。 (感谢我愚蠢的 iPod,在下一条评论中继续) (续)谢谢!看起来它会起作用。我会在早上尝试 - 是否也提交表单,还是我必须在数据列表中添加一些内容以供“提交”?【参考方案5】:您想要mechanize 库。这使您可以轻松地自动化浏览网站和提交表单/以下链接的过程。我链接到的网站有很好的示例和文档。
【讨论】:
:D 我已经安装好了,我会玩一下!谢谢:D 我在尝试导入 mechanize 时收到此错误:Traceback (最近一次调用最后一次): File "以上是关于使用 Python 登录网站,填写表格,然后退出的主要内容,如果未能解决你的问题,请参考以下文章