使用Python登录网站,填写表格,然后退出

Mat*_*hew 20 html python forms urllib web

作为我在Python上变得更好的一部分,我现在正试图登录我经常访问的网站,给自己发一条私信,然后退出.到目前为止,我已设法登录(使用urllib,cookiejar和urllib2).但是,我无法弄清楚如何填写所需的表格来给自己发送信息.

表单位于/messages.php?action=send.要发送的消息需要填写三件事:名称为name,title和message的三个文本字段.此外,还有一个提交按钮(名为"提交").

我如何填写此表并发送?

Jan*_*cak 14

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()
Run Code Online (Sandbox Code Playgroud)

只需替换http://www.abc.com/messages.php?action=send提交表单的网址即可

回复您的评论:如果网址是您的表单所在的网址,并且您只需要为一个网站执行此操作,请查看该网页的源代码并查找

<form method="POST" action="some_address.php">
Run Code Online (Sandbox Code Playgroud)

并将此地址作为参数 urllib2.urlopen

你必须意识到submit按钮的作用.它只是向表单中Http定义的URL 发送请求action.所以你要做的就是模拟这个请求urllib2


And*_*son 11

你想要机械化库.这使您可以轻松自动化浏览网站和提交表单/以下链接的过程.我链接的网站有很好的例子和文档.


Pra*_*Dey 8

您可以使用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()
Run Code Online (Sandbox Code Playgroud)