使用Python和Curl提交表单

0 投票
3 回答
3609 浏览
提问于 2025-04-15 22:52

我刚接触Python没几天,想找个例子来看看怎么把表单提交到一个网站,比如www.example.com。

我已经会用Curl了。实际上,我写过C+++代码,做的事情和这个一样(就是用Curl提交表单),但我希望能有个起点(几行代码让我可以在此基础上继续扩展),教我怎么用Python来实现这个功能。

3 个回答

0
curl -d "birthyear=1990&press=AUD" www.site.com/register/user.php

这是一个链接,指向一个网站,里面有关于使用curl工具进行HTTPS脚本编写的说明。你可以点击这个链接去查看具体的内容。

0

有两个主要的Python库可以用来自动化网页操作:

  • Mechanize
  • Twill

    Twill似乎已经有好几年没有更新了,自2007年12月以来一直停留在0.9版本。而Mechanize最近刚刚更新,最新版本是0.2.1,发布于2010年5月16日。

    当然,你可以在它们各自的网站上找到示例代码。Twill基本上提供了一个简单的命令行式解释器,而Mechanize则提供了一个类和API,你可以用类似字典的方式来设置表单的值,比如使用__setattr__()方法。两者都使用BeautifulSoup来解析“真实世界”的HTML(也就是那些不太规范的HTML)。这对于处理你在网上遇到的HTML非常推荐,但对于你自己写的HTML则不太建议,因为你应该写出符合标准、能通过验证的HTML。

2

这里有一个使用urllib和urllib2进行POST和GET请求的例子:

POST请求 - 如果urlopen()有第二个参数,那就是一个POST请求。

import urllib
import urllib2

url = 'http://www.example.com'
values = {'var' : 500}

data = urllib.urlencode(values)
response = urllib2.urlopen(url, data)
page = response.read()

GET请求 - 如果urlopen()只有一个参数,那就是一个GET请求。

import urllib
import urllib2

url = 'http://www.example.com'
values = {'var' : 500}

data = urllib.urlencode(values)
fullurl = url + '?' + data
response = urllib2.urlopen(fullurl)
page = response.read()

你也可以使用curl,只需通过os.system()来调用它。

这里有一些有用的链接:
http://docs.python.org/library/urllib2.html#urllib2.urlopen
http://docs.python.org/library/os.html#os.system

撰写回答