2016-07-26 394 views
1

我的目的是写一个python脚本时,URL被作为输入返回Facebook的ID。我发现这website它做同样的事情。如何通过POST请求向网站发送请求?

我要问:

1)是否有可能,我发送POST请求自己,这将包括使用“urllib的”库“的urlopen”命令由用户输入的网址是什么?然后从urllib.read()函数中提取答案?

2)如果没有可能,我该怎么做这个任务?

我有POST和HTTP知之甚少。但无法弄清楚这一点。

从阅读网页源代码,POST请求被发送这种方式:

<form method="POST"> 
    <div class="form-group"> 
     <input 
      name="url" 
      type="text" 
      placeholder="https://www.facebook.com/YourProfileName" 
      class="input-lg form-control"> 
     </input> 

    </div> 
    <button type="submit" class="btn btn-primary">Find numeric ID &rarr;</button> 

</form> 
+0

你可能想看看蟒蛇,请求(http://docs.python-requests.org/en/master/ )以更简单的方式从Python执行http请求。如果你希望做任何与网络相关的事情,你就需要了解HTTP协议的工作原理。 –

+0

我知道,我有这个想法,但是你能否指出这个网站发送和接收一次的论点?收到的url包含单词success和facebook id,所以这不会成为问题。 –

+0

阅读facebook-api文档怎么样? https://developers.facebook.com/docs/graph-api –

回答

3

那么最简单的答案会是您使用requests
您可以使用安装

pip install requests 

正常的用法是(假设你使用python 3):

import requests 
payload={ 
    'key1':'value1', 
    'key2':'value2' 
} 
r = requests.post('http://url', data = payload) 
print(r.content) 

如果你想使用的urllib您可以使用此示例代码中发现here

import urllib.parse 
import urllib.request 

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

data = urllib.parse.urlencode(values) 
data = data.encode('ascii') # data should be bytes 
req = urllib.request.Request(url, data) 
with urllib.request.urlopen(req) as response: 
    the_page = response.read() 
+0

在这种情况下传递的值是? (facebook id网站) –