[英]Request.post returns nothing
我有一個非常簡單的腳本,該腳本應該執行登錄網頁的過程:
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent': 'Mozilla/5.0'}
credentials = {'user': 'user',
'pass': 'pass'}
session = requests.Session()
req = session.get('https://myurl.com', verify=False)
html = BeautifulSoup(req.text)
login_form = html.find('form', {'name': 'loginForm'})
login_url = login_form['action']
# at this moment login_url has this form: https://myurl.com/webclient;jsessionid=AC7F87C5D38C0B2EABBF6D76379BB75B?pageid=816
req2 = session.post(login_url, data=credentials, headers=headers, verify=False)
print 'req2:', req2.text # prints nothing
為什么req2.text(盡管req2.status_code返回200)為空? 當我在html源中檢查表單的 動作屬性時,我看到沒有jsessionid的 URL。 為什么? 我應該將我的憑據在request.post中發送到哪個地址?
PS。 pageid是動態生成的,因此這就是為什么我使用BeautifulSoup從html表單獲取此url的原因。
我發現了問題,這確實很簡單-在這種情況下,提交按鈕值是強制性的。 因此,我要做的就是將按鈕值添加到憑據字典中。
嘗試編碼值:
credentials = {
'user'.encode("utf-8"): 'user'.encode("utf-8"),
'pass'.encode("utf-8"): 'pass'.encode("utf-8")
}
我相信你會寫得更好。 我有同樣的問題,那就是解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.