首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用python提交到web表单

使用python提交到web表单
EN

Stack Overflow用户
提问于 2013-07-07 13:41:24
回答 2查看 101.3K关注 0票数 29

我见过这样的问题问了很多次,但没有一个是有帮助的。

我正在尝试将数据提交到web上的表单,尝试过的请求和urllib都没有成功。

例如,下面的代码应该在SO上搜索python标记:

import urllib
import urllib2

url = 'http://stackoverflow.com/'

# Prepare the data
values = {'q' : '[python]'}
data = urllib.urlencode(values)

# Send HTTP POST request
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)

html = response.read()

# Print the result
print html

然而,当我运行它时,我得到了主页的html源代码。

以下是使用请求的示例:

import requests

data= {
    'q': '[python]'
    }
r = requests.get('http://stackoverflow.com', data=data)

print r.text

同样的结果!我不明白为什么这些方法不起作用,我已经在不同的网站上尝试过,但都没有成功,所以如果有人成功做到了这一点,请告诉我怎么做!

非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2015-01-22 03:30:19

import urllib
import urllib2

url = 'http://www.someserver.com/cgi-bin/register.cgi'
values = {'name' : 'Michael Foord',
      'location' : 'Northampton',
      'language' : 'Python' }

data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req) 
the_page = response.read()

这将使用值中指定的数据发出POST请求。我们需要urllib对url进行编码,然后使用urllib2发送请求。

票数 11
EN

Stack Overflow用户

发布于 2017-07-15 19:34:44

来自python的机械化库也很棒,它甚至允许你提交表单。您可以使用以下代码来创建浏览器对象和创建请求。

import mechanize,re
br = mechanize.Browser()
br.set_handle_robots(False)   # ignore robots
br.set_handle_refresh(False)  # can sometimes hang without this
br.addheaders = [('User-agent', 'Firefox')]             
br.open( "http://google.com" )
br.select_form( 'f' )
br.form[ 'q' ] = 'foo'
br.submit()
resp = None

for link in br.links():
    siteMatch = re.compile( 'www.foofighters.com' ).search( link.url )

    if siteMatch:
        resp = br.follow_link( link )
        break

content = resp.get_data()
print content
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17509607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档