猿问

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

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

白衣染霜花
浏览 1368回答 1
1回答

哈士奇WWW

scrapy的文档说得不是很清楚,起码误导了我这样的新人。我就说这么流行的框架怎么需要自己来处理cookie呢?两个需要注意的点:1.有些登陆只需要你填用户名和密码,但你看包发现还要再添加其他的值对不对?因为这些值的类型是隐藏的,就像这样:<input type="hidden">所以你如果要找这些值的话就去网页源代码里找。scrapy提供了这样一个函数来帮你填上那些隐藏的值2.当你登陆成功后,不用再管cookies,你就已经是带着这个cookies来访问了。但是前提是函数要用对。这个函数是不行的:scrapy.Request(),要用这个from scrapy.http import Request,然后再用Request()就可以了。根本不需要死扣request的headers。(应该有会更好,因为更像浏览器。)
随时随地看视频慕课网APP
我要回答