今天尝试模拟登录一个网站,由于要爬的页面必须登录才能访问,所以我用requests.Session()来保持Cookie,再访问要爬的页面。
但是这个爬虫有时模拟登录成功,有时失败,很奇怪。
测试是否登录成功的代码片段如下:account_page = 'https://example.com/mypage'
response = session.get(account_page)
if response.url == account_page:
print(u'已成功模拟登录!')
else:
print(u'模拟登录失败!')
原理是 https://example.com/mypage 页面是只有登录用户才能成功访问的页面,非登录用户访问这个页面会被重定向到登录页面 https://example.com/login?referer=/mypage/ 所以只要比较响应对象的 url 和要访问的目标 url 是否一致即可。
由于有时候是能登录成功的,所以与Form Data, headers都无关。
试着加入 time.sleep(3) 在post账号信息和get账号页面之间来增加3秒的延时,重试了几次结果也一样,排除之。
然后我分别在登录失败与登录成功的情况下打印响应对象的请求历史:account_page = 'https://example.com/mypage'
response = session.get(account_page)
if response.url == account_page:
print(