scrapy 通过FormRequest模拟登录再继续
2017-12-27 16:14
351 查看
1.参考
https://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.Spider.start_requests
自动提交 login.php 返回表单
2.模拟登录雪球
# -*- coding: utf-8 -*- import os import scrapy from scrapy.shell import inspect_response # https://doc.scrapy.org/en/latest/topics/spiders.html start_requests() 章节 class LoginSpider(scrapy.Spider): name = 'login' allowed_domains = ['xueqiu.com'] # start_urls = ['http://xueqiu.com/'] #The default implementation generates Request(url, dont_filter=True) for each url in start_urls. url_login = 'https://xueqiu.com/snowman/login', url_somebody = 'https://xueqiu.com/u/6146070786' data_dict = { 'remember_me': 'true', # 'username': 'fake', #返回200 {"error_description":"用户名或密码错误","error_uri":"/provider/oauth/token","error_code":"20082"} 'username': os.getenv('xueqiu_username'), 'password': os.getenv('xueqiu_password'), } def start_requests(self): return [scrapy.FormRequest(url = self.url_login, headers={'X-Requested-With': 'XMLHttpRequest'}, #否则404将导致退出,抓包页面显示登录成功 meta={'proxy': 'http://127.0.0.1:8888'}, #否则fiddler导致返回缓慢 formdata = self.data_dict, callback=self.logged_in)] def logged_in(self, response): # inspect_response(response, self) assert os.getenv('xueqiu_nickname') in response.text #AssertionError 将导致退出 return scrapy.Request(self.url_somebody, dont_filter=True, meta={'proxy': 'http://127.0.0.1:8888'}) def parse(self, response): # inspect_response(response, self) self.log(os.getenv('xueqiu_nickname') in response.text)
相关文章推荐
- Scrapy框架学习(五)----Request、Response介绍及模拟GitHub登录
- 通过scrapy,从模拟登录开始爬取知乎的问答数据
- python scrapy爬取生物谷之模拟登陆(使用FormRequest)
- 在scrapy上使用cookie模拟登录
- C# HttpWebRequest保存cookies模拟登录的方法
- scrapy 模拟登录后再抓取
- Scrapy框架学习 - 模拟登录的实现方式
- 通过计算窗体工作区来模拟FormBorderStyle=None
- python通过cookie模拟已登录状态的初步研究
- Python爬虫通过替换http request header来欺骗浏览器实现登录功能
- scrapy的basic模板模拟登录、requests模拟登录
- 使用HttpWebRequest和HttpWebResponse实现模拟登录需要登陆后才可以访问的页面
- Scrapy解决模拟登录问题
- C#使用HttpWebRequest与HttpWebResponse模拟用户登录
- scrapy模拟登录微博
- HttpWebRequest模拟登陆,存储Cookie以便登录请求后使用
- 利用WebRequest来实现模拟浏览器通过Post方式向服务器提交数据
- 利用WebRequest来实现模拟浏览器通过Post方式向服务器提交数据
- 利用WebRequest来实现模拟浏览器通过Post方式向服务器提交数据
- enctype="multipart/form-data 无法通过request得到值