2015-04-27 97 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()