Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-登录到远程登录页面_Python_Django_Login - Fatal编程技术网

Python Django-登录到远程登录页面

Python Django-登录到远程登录页面,python,django,login,Python,Django,Login,我想通过django登录到一个外部远程页面 我的意思是使用django,将用户名和密码发送到该站点,在logine.g之后获取页面的html文件,并执行一些jQuery从tahat页面提取一些需要的数据! 我在PHP中搜索并发现CURL做了我想做的事情,但是我应该如何在Django??< /P> < P>当做这样的任务时,有两个方面需要考虑。首先,如果你控制了你想与之交流的网站,其次,如果该网站有没有API。您需要使用不同的库,具体取决于这些库 如果你想访问的网站有一个API,你可以直接从你的程

我想通过django登录到一个外部远程页面 我的意思是使用django,将用户名和密码发送到该站点,在logine.g之后获取页面的html文件,并执行一些jQuery从tahat页面提取一些需要的数据!
我在PHP中搜索并发现CURL做了我想做的事情,但是我应该如何在Django??< /P> < P>当做这样的任务时,有两个方面需要考虑。首先,如果你控制了你想与之交流的网站,其次,如果该网站有没有API。您需要使用不同的库,具体取决于这些库

如果你想访问的网站有一个API,你可以直接从你的程序与之通信,即调用方法并以“机器友好”的格式(如Json、XML等)获取结果。如果网站没有API,您需要模拟用户交互并解析HTML,在这些情况下,测试工具通常能很好地做到这一点

例如,如果要访问的站点是本地Django站点,则可以使用Django的测试工具:

>>> from django.test.client import Client
>>> c = Client()
>>> response = c.post('/login/', {'username': 'john', 'password': 'smith'})
>>> response.status_code
200
>>> response = c.get('/customer/details/')
>>> response.content
'<!DOCTYPE html...'

如果您想要访问的网站有一个API,并且您通过REST调用(上面的请求库示例)来访问它,那么这会简单得多。根据您想要访问的网站,您可能已经有了一个Python库,它通常是这些API调用的包装器

经过多次搜索,终于找到了2种解决方案: 1使用这款令人惊叹的流行Django软件包: 正如它所说,我可以做到这一点:

import requests

r = requests.get('https://api.github.com', auth=('user', 'pass'))

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
2第二种解决方案是使用:


不,我想登录gmail.com!!我认为这不是我自己的站点,正如文档中所说:允许您以编程方式测试视图并与支持Django的应用程序交互,而不是登录到其他站点!这个答案仍然有效,因为它是一个一般性的答案。同样的指导方针适用于几乎所有的网站。特别是对于Gmail,我会使用它,它对。寻找站点的API是我在答案中给出的第二个建议。不,测试客户端是为您自己的站点,而不是其他没有任何API的站点!你是对的,对不起,我改进了答案。我希望现在说得通。再次感谢罗伯托!是的,答案是正确的!最酷的是,你的回答和我找到答案的时间完全一样:你可以在这里查看我的答案:D!!:
import requests

r = requests.get('https://api.github.com', auth=('user', 'pass'))

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
import urllib2

gh_url = 'https://api.github.com'

req = urllib2.Request(gh_url)

password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, gh_url, 'user', 'pass')

auth_manager = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_manager)

urllib2.install_opener(opener)

handler = urllib2.urlopen(req)

print handler.getcode()
print handler.headers.getheader('content-type')

# ------
# 200
# 'application/json'