爬虫:网站怎么知道是否有登陆

在提交表单之前,cookies有个session-id。
登陆完之后,cookies有个auth。
这个auth就用在后面获取一个token值,而该token值用在请求一个MAINFRAME.aspx上,而我想爬的这个B网页它就只带这session-id,Referer是A网页,而A网页Referer是这个MAINFRAME.aspx文件。我现在只能爬到A网页,而想爬的B网页提示我要登陆。我知道这肯定跟有没登陆肯定有联系(以为会直接带cookies就好了),但是竟然没用到,有人知道如何解决吗?

阅读 4.9k
1 个回答

怎么最近都是自问自答的。。。
scrapy的文档说得不是很清楚,起码误导了我这样的新人。
我就说这么流行的框架怎么需要自己来处理cookie呢?
两个需要注意的点:
1.有些登陆只需要你填用户名和密码,但你看包发现还要再添加其他的值对不对?因为这些值的类型是隐藏的,就像这样:<input type="hidden">所以你如果要找这些值的话就去网页源代码里找。
scrapy提供了这样一个函数来帮你填上那些隐藏的值

2.当你登陆成功后,不用再管cookies,你就已经是带着这个cookies来访问了。但是前提是函数要用对。
这个函数是不行的:scrapy.Request(),要用这个from scrapy.http import Request,然后再用Request()就可以了。根本不需要死扣request的headers。(应该有会更好,因为更像浏览器。)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进