使用Python请求模块登录Canva网站

时间:2018-06-24 08:38:21

标签: python web-scraping python-requests

我正在尝试登录 Canva 网站,并使用此url

登录我的帐户

我得到的状态代码为 200 。但是,当我使用 Chrome 登录并检查元素(网络)时,表单操作的状态代码

"/login/login/canva?redirect=%2F" 

302 方法的 POST

Form 数据只有三个字段。我已经包含在脚本中了。

这是我在做什么

import urllib.request, urllib.parse, urllib.error
import lxml.html
from bs4 import BeautifulSoup
import requests
import ssl
from scrapy.http import FormRequest
from fake_useragent import UserAgent
import json


header = {
    'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
    'referer' : 'http://www.canva.com/login/canva?redirect=%2F'
}

s = requests.Session()
get_some = s.get('http://www.canva.com/login')
soup = BeautifulSoup(get_some.text,'html.parser')
tags = soup('input')
for tag in tags:
    if tag.get('type',None) == "hidden":
        token = tag.get('value')
        break
for form in soup.find_all('form'):
    print(form.attrs.get('action'))
#print(soup.prettify())
print("===================================")
payload = {
    'csrf_token' : token,
    'email' : '**************',
    'password' : '*********'
}
post_some = s.post('http://www.canva.com/login',data=payload , headers = header)
get_now = s.get('http://www.canva.com/login/canva?redirect=%2F')
print(post_some.status_code)
#print("xxxxxxxxxxxxxxxxxxxxxx")
if 'abcd' in get_now.text:
    print("yes")
else:
    print("no")

我只是从 GET 请求对象 get_now 返回登录页面。任何帮助将不胜感激。

0 个答案:

没有答案