使用Python和Curl发布表单

使用Python和Curl发布表单,python,curl,Python,Curl,我对Python还比较陌生(几天之后),我想找一个例子,告诉我如何在网站上发布表单(比如www.example.com) 我已经知道如何使用Curl了。事实上,我编写的C++代码也做了完全相同的事情(即使用Curl发布表单),但我希望有一些起点(我可以从其中构建的几行代码),这将向我展示如何使用Python来实现这一点 curl -d "birthyear=1990&press=AUD" www.site.com/register/user.php 以下是一个将urllib和urlli

我对Python还比较陌生(几天之后),我想找一个例子,告诉我如何在网站上发布表单(比如www.example.com)

我已经知道如何使用Curl了。事实上,我编写的C++代码也做了完全相同的事情(即使用Curl发布表单),但我希望有一些起点(我可以从其中构建的几行代码),这将向我展示如何使用Python来实现这一点

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

以下是一个将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()
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()
GET-如果
urlopen()
只有一个参数,那么它就是一个GET请求

import urllib
import urllib2

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

data = urllib.urlencode(values)
response = urllib2.urlopen(url, data)
page = response.read()
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()
如果使用
os.system()
调用,也可以使用
curl

以下是一些有用的链接:


有两个主要的Python包用于自动化web交互:

  • Twill显然已经有几年没有更新了,而且自2007年12月以来一直是0.9版本。Mechanize显示了changelog和几天前发布的版本:2010-05-16,版本为0.2.1

    当然,您会在它们各自的网页中找到列出的示例。Twill本质上提供了一个简单的类似shell的解释器,而Mechanize提供了一个类和API,您可以在其中使用类似Python字典的(
    \uuuuu setattr\uuuu()
    method)语句设置表单值。两者都使用BeautifulSoup解析“真实世界”(邋遢的标签汤)HTML。(强烈建议您处理在野外遇到的HTML,强烈建议您不要使用自己编写的HTML,因为它应该通过符合标准、验证和解析器的测试)


woot!。它真的这么简单吗?+1表示代码片段。啊,所以我不一定需要卷发。不过我有两个问题。1). 如何指定HTTP方法,即POST而不是GET?2). 据推测,这是类似的代码,您可以使用它将页面从url“获取”到内存中(比如在解析它之前)?1)我编辑了这篇文章,以包含post和GET的示例。2) 从
urlopen()
返回的响应是从服务器返回的内容的文件对象。然后,您可以使用您喜爱的解析器(BeautifulSoup)或您自己的方法解析此内容。希望这对您有所帮助urllib2的答案是最常见和最有说服力的方法,如果您的需求很简单,您应该坚持这样做。但是,如果您有更严重的需求,并且希望一次管理多个并发连接,那么PyCurl是值得研究的。