2015-04-27 101 views
1

我正在使用python 3.4.3,并试图使用请求登录到OKCupid。Python:使用GET请求使用python登录网站

我的代码返回的页面是初始登录页面,而不是用户在成功登录后看到的页面。我试着在这里和其他教程中查找几个答案,其中大多数指导我检查开发人员选项卡并使用方法“POST”查看请求,但我没有看到任何此类请求。

相反,我看到“GET”请求,并且我不确定请求如何处理这些请求。我尝试了许多不同的方法,但都没有成功。这里是我有更简单的代码:

import requests 
from bs4 import BeautifulSoup 

user='USERNAME' 
pw='PASSWORD' 
url='http://www.okcupid.com/login' 

session=requests.session() 

values = {'login_username':user, 'login_password':pw} 
r = session.post(url,data=values) 
soup = BeautifulSoup(r.content) 
pSoup = BeautifulSoup.prettify(soup) 

print(soup.title.string) 

回答

2

我能弄明白。如果这对未来某个人有帮助:有两件事阻止我以前的代码正常工作:

  1. 我需要在url中指定'https'而不是'http'。
  2. 我错过了值向量中的'okc_api'值。我以前没有检测到这一点,因为Chrome的开发人员工具没有选中“保留日志”。因此,在查看“表单数据”值之前,Chrome会删除登录“POST”请求。

这里是修改后的代码:

import requests 
from bs4 import BeautifulSoup 

user='USERNAME' 
pw='PASSWORD' 
url='https://www.okcupid.com/login' 

session=requests.session() 

values = {'username': user, 'password': pw, 'okc_api': '1'} 
session.post(url, data=values) 
page = session.get('http://www.okcupid.com/') 

soup = BeautifulSoup(page.content) 
print(soup.title.string) 

session.close()