python3 502坏网关

2024-10-03 11:15:25 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我用请求模块学习python3的crawler。我想做的是登录GitHub。我有一个错误是502坏网关。我用邮件头和cookies发布消息,但我不知道为什么会出现502错误。如果有人能帮我的话,非常感谢。代码如下:

from urllib import request,parse
from bs4 import BeautifulSoup
from http import cookiejar
import gzip
preURL = 'https://github.com/login?return_to=%2Fexplore'
url = 'https://github.com/session'

print('-'*30)

#create CookieJar object
ckobj = cookiejar.CookieJar()
ckHandler = request.HTTPCookieProcessor(ckobj)
httphd = request.HTTPHandler(debuglevel = 1)
httpshd = request.HTTPSHandler(debuglevel = 1)
opener = request.build_opener(httphd, httpshd, ckHandler)

#get token
def Get_Token():
    req = opener.open(preURL)
    print('-'*30)
    print('req.headers')
    print(req.headers)
    content = req.read().decode('utf-8')
    bs = BeautifulSoup(content,'html5lib')
    # utf8Flag = bs.find(attrs={'name':'utf8'}).attrs['value']
    # token = bs.find(attrs={'name':'authenticity_token'}).attrs['value']
    # return [utf8Flag,token]
    utf8Flag = (bs.find(attrs={'name':'utf8'}).get('value'))
    token = (bs.find(attrs={'name':'authenticity_token'}).get('value'))
    # print(utf8Flag,token)
    print('-'*30)
    print(utf8Flag)
    print(token)
    print('-'*30)
    return [utf8Flag,token]


param = Get_Token()

#define the headers
myHeader = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'deflate, br',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Host': 'github.com',
'Content-Length': '196',
'Content-Type': 'application/x-www-form-urlencoded',
'Origin': 'https://github.com',
'Referer': 'https://github.com/session',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'}
#define the data form
postData = {
'utf8': param[0],
'authenticity_token': param[1],
'login': 'xxxxxx',
'password': 'xxxxxx'}
pData = parse.urlencode(postData).encode('utf-8')


#create request.Request object containing the headers and data form

hds = request.Request(url, headers = myHeader, data = pData)

try:
    req = opener.open(hds)
except Exception as e:
    print(repr(e))

Tags: namehttpsimportgithubcomtokenbsrequest