如何在python3中使用請求登錄tumblr? 這是我的代碼,但它不能很好的工作,並返回到登錄頁面。 我使用request.post來發布登錄表單數據,並失敗。python3登錄網站tumblr.com
import requests
from bs4 import BeautifulSoup
start_url = 'https://www.tumblr.com'
# set a session for request
s = requests.Session()
s.headers.update({'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0', 'accept-language': 'zh-CN,zh;'}
)
# get the form_key for login_in
r = s.get(start_url)
login_soup = BeautifulSoup(r.text, 'lxml')
hidden_div = login_soup.find('div', class_='form_row_hidden').find_all('input')
key_dict = {}
for input_tag in hidden_div:
tmp_dict = input_tag.attrs
key_dict.update({tmp_dict['name']: tmp_dict['value']})
user_data_dict = {'determine_email': '×××××××××',
'user[email]': '××××××××',
'user[password]': '××××××××',
'user[age]': '',
'tumblelog[name]': ''}
key_dict.update(user_data_dict)
# log in tumblr
r_login=s.post(start_url, headers=headers, data=key_dict)
home_soup=BeautifulSoup(r.text, 'lxml')
print(home_soup)
# the output is still the log-in page.
你的例外是什麼?爲什麼不使用[pytumblr](https://github.com/tumblr/pytumblr)API庫? – cuongnv23
我可以只使用請求來登錄tumblr而不是使用API嗎? – aquasamss
你可以。首先,您必須向用戶代理商提出tumblr.com/login的獲取請求,就像您一樣。在這個請求的結果中,你必須解析並得到'form_key'的值,這個值用來做一個真正的post來登錄。獲得'form_key'之後,將其包含在'key_dict'中併發布信息。爲確保您已經登錄,請向https://www.tumblr.com/svc/post/get_post_form_builder_data發送獲取請求以確認。 – cuongnv23