最近公司要往一个网页上提交数据,所以直接用爬虫做接口了,当我登录完成后发现,网址不一样了而且用同样的session提交不了数据, 用抓包工具进行抓包发现是重定向了 而且不是一个,重定向了三个。3个公司的代码拼出了一套网页项目 😕 。
废话不多说,上代码:
# 获取请求url域名
def getHost(url):
pattern = re.compile(r'(.*?)://(.*?)/', re.S)
response = re.search(pattern, url)
if response:
return {'header':str(response.group(1)).strip(), 'host': str(response.group(2)).strip()}
else:
return None
#创建存储cookie的map
cookieType={}
#获取cookie
def getCode():
locationList = set()
cookie = ''
loginAfterUrl = url # 开始重定的url
try:
while True:
#每次请求重定向中的url allow_redirects=False 禁止重定向
authResponse=session.get(url=resUrl,verify=False,allow_redirects=False)
cookie = session.cookies.get_dict()
hostObj = getHost(resUrl)
if cookie == {}:
pass
else:
cookieType[str(hostObj['host']).strip()] = json.dumps(cookie) # 保存cookie
# 获取跳转的url
if 'Location' in authResponse.headers.keys():
url = authResponse.headers.get('Location')
if not 'http' in url:
url = hostObj['header'] + '://' + hostObj['host'] + url # 拼接host域名
resUrl = url
# if url in locationList: break;
locationList.add(url)
else:
break;
return {'url': str(resUrl), 'content': authResponse.content, 'header': authResponse.headers}
except TypeError :
return "";
except UnboundLocalError:
return None;
运行完之后根据cookieTypep[host]获取对应的cookie;