请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

selenium模拟微博登录后,对某一个url请求,返回来的source_page仍没有加载script脚本。

正在回答

1回答

bobby 2017-06-16 09:12:23

你这里是结合了selenium的模拟登录和scrapy的request了吧, selenium的cookie是不能进入scrapy的request的 如果要用selenium模拟登录然后让scrapy可用selenium的cookie 就要自己去设置cookie到scrapy中, 具体方法你可以参考scrapy的源码中下的 downloadmiddlewares/cookies.py文件 里面有具体的逻辑

0 回复 有任何疑惑可以回复我~
  • 提问者 宝慕林5723456 #1
    老师,起初想设计一个爬取某一个人的微博记录的功能。设计的流程步骤是:用selenium模拟登陆微博之后,然后自动在搜索框输入“爬取的人名”,跳转到相应页面后,在对某一个控件点击,实现进入爬取的主人公的主页面。爬取完一页的信息后,在让selenium自动点击下一页,再进行解析。所以程序设计逻辑:spiders发起weibo.com的请求,经过Downloader中间件SinaPageMiddleware,如果是第一次也就是weibo.com的请求,就用selenium实现自动登录,搜索,跳转返回页面信息。如果是第二次请求,也就是下一页的请求,则用selenium点击下一页控件。问题是在第一次处理的时候由于进入爬取主人公页面默认在浏览器新打开一个页面,所以获取的总是之前搜索的页面,所以用了browser.get(url)直接请求爬取主人公页面,略过搜索跳转步骤。辛苦老师看了这么长,最后总结成两个问题:1这种设计是否合理,在实际爬取过程中,我们是不是应该只用selenium实现模拟登陆,其他还是应该用scrapy的requests来完成。2我在请求爬取主人公页面的时候,用的是browser.get(),这样cookies也没有带过去吗。
    回复 有任何疑惑可以回复我~ 2017-06-16 10:11:48
  • 提问者 宝慕林5723456 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-06-16 10:11:56
  • bobby 回复 提问者 宝慕林5723456 #3
    这个设计基本上没有问题 不过在爬取的时候如果能用scrapy的request完成的话 就尽量使用scrapy完成 对于一些复杂的逻辑 比如分析登录比较麻烦 或者反爬虫比较厉害你可以使用selenium来完成爬取
    回复 有任何疑惑可以回复我~ 2017-06-18 18:10:04
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号