我是从这篇博客中(https://blog.csdn.net/zwq912318834/article/details/79571110)了解的一点基础东西,代码都是从这篇博客里面的源代码直接复制过去测试和学习的。
遇到的问题:
1、返回状态码:502——百度得知这是一个反爬虫的状态码,原博主是写于2018年3月份,我测试是在2020年2月份,说明马蜂窝已经做了反爬虫的策略,由于自己这方面不够火候,没有继续追究,因此继续测试和学习其他的东西
2、博客里面的几个链接是怎么获得的?
-
https://passport.mafengwo.cn/login/————这个链接,博客里面开始就写的很明白了
-
http://www.mafengwo.cn/plan/route.php————这个链接是登录成功后才能打开的其中一个页面,自己可以选择页面,页面的链接就从地址栏获得,是为了测试爬虫程序模拟登录的时候是否成功的,如果说程序请求这个页面返回状态码200,则成功,否则失败
-
http://www.mafengwo.cn/plan/fav_type.php————这个链接登录成功后的跳转链接,即当已经登录过,有cookies的时候,就可以直接打开,目的是程序中获得的cookies还有效,返回状态码200,即模拟登录成功
3、cookies是怎么获得和保存的?火候不够,主要百度了这个对象而了解一二:
cookielib.LWPCookieJar(filename = "mafengwoCookies.txt"),这段程序是把cookies保存到项目目录下,名字叫mafengwoCookies的文件
4、cookies怎么获得和保存?程序如下图位置
5、原博主的最终程序有个小bug,当删除了这个cookies文件后,运行博主的最终程序会报错
原因是入口程序的逻辑问题
原入口程序
if __name__ == "__main__":
# 第一步:尝试使用已有的cookie登录
mafengwoSession.cookies.load()
isLogin = isLoginStatus()
print(f"is login mafengwo = {isLogin}")
if isLogin == False:
# 第二步:如果cookie已经失效了,那就尝试用帐号登录
print(f"cookie失效,用户重新登录...")
mafengwoLogin("13798233592", "Aa1111111")
resp = mafengwoSession.get("http://www.mafengwo.cn/plan/fav_type.php", headers = header, allow_redirects = False)
print(f"resp.status = {resp.status_code}")
修改后的入口程序
if __name__ == "__main__":
# 第一步:尝试使用已有的cookie登录
try:
mafengwoSession.cookies.load()
except:
print(f"本地没有cookies文件,重新获取中...")
isLogin = isLoginStatus()
print(f"is login mafengwo = {isLogin}")
if isLogin == False:
# 第二步:如果cookie已经失效了,那就尝试用帐号登录
print(f"cookie失效,用户重新登录...")
mafengwoLogin("13798233592", "Aa1111111")
resp = mafengwoSession.get("http://www.mafengwo.cn/plan/fav_type.php", headers = header, allow_redirects = False)
print(f"resp.status = {resp.status_code}")
至此,Python利用requests模块模拟登录测试完成,获得了一点基础入门的小知识吧