Python请求-无法获取POST表单响应(仅返回表单)

时间:2018-08-02 10:10:46

标签: web-scraping

我正在尝试使用Python的“请求”模块填写POST表单,然后获取输出。许多网站似乎都使用此代码作为示例。但是,它只保留返回表格。我创建了一个简单的POST表单,它似乎也正在返回表单本身。这是Python代码:

@RunWith(AndroidJUnit4::class)
class ViewModelTest {

    @Test
    @Throws(Exception::class)
    fun someTest() {
        val application = InstrumentationRegistry.getTargetContext().applicationContext as Application
        val testViewModel = MyViewModelThatExtendsFromAndroidViewModel(application)
        testViewModel.foo()
    }

}

“测试” HTML表单:

import requests

url = 'http://127.0.0.1/test.html'
data = { 'name': 'Test','age': '52'}

r = requests.post(url, data=data)
print(r.text)

“测试” PHP表单:

<html>
    <head>
        <title>Test page</title>
    </head>
    <body>
        <form action='test.php' method='post'>
            <input name='name' type='text'>
            <br>
            <input name='age' type='text'>
            <br>
            <input name='calculate' type='submit' value='Submit test'>
        </form>
    </body>
</html>

我可以确认表单本身可以正常运行,而浏览器没有任何问题。有谁知道是什么引起了这个问题?

1 个答案:

答案 0 :(得分:2)

您可以直接发布到php页面。

import requests

url = 'http://127.0.0.1/test.php'
data = { 'name': 'Test','age': '52'}

r = requests.post(url, data=data)
print(r.text)

基于@ WeavingBird1917的评论:

import requests

url = 'http://www.mso.anu.edu.au/cgi-bin/ephem.cgi'
data = { 'action': 'display','date': 'today','latitude':'-35:19:12','longitude':'149:00:30','timezone':'+10:00'}


r = requests.post(url, data=data)
print(r.text)