scrapy 通过FormRequest模拟登录再继续
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 通过FormRequest模拟登录再继续的更多相关文章
- 通过scrapy,从模拟登录开始爬取知乎的问答数据
这篇文章将讲解如何爬取知乎上面的问答数据. 首先,我们需要知道,想要爬取知乎上面的数据,第一步肯定是登录,所以我们先介绍一下模拟登录: 先说一下我的思路: 1.首先我们需要控制登录的入口,重写star ...
- scrapy基础知识之 scrapy 三种模拟登录策略:
注意:模拟登陆时,必须保证settings.py里的 COOKIES_ENABLED (Cookies中间件) 处于开启状态 COOKIES_ENABLED = True或 # COOKIES_ENA ...
- python之scrapy的FormRequest模拟POST表单自动登陆
1.FormRequest表单实现自动登陆 # -*- coding: utf-8 -*- import scrapy import re class GithubSpider(scrapy.Spid ...
- 潭州课堂25班:Ph201805201 爬虫高级 第五课 sclapy 框架 日志和 settings 配置 模拟登录(课堂笔记)
当要对一个页面进行多次请求时, 设 dont_filter = True 忽略去重 在 scrapy 框架中模拟登录 创建项目 创建运行文件 设请求头 # -*- coding: utf-8 ...
- scrapy模拟登录微博
http://blog.csdn.net/pipisorry/article/details/47008981 这篇文章是介绍使用scrapy模拟登录微博,并爬取微博相关内容.关于登录流程为嘛如此设置 ...
- Scrapy用Cookie实现模拟登录
模拟登录是爬取某些站点内容的一个关键,有些网站(特别是论坛类),不登录的话,一个数据也拿不到. 模拟登录有这样几个关键: 弄清楚登录的url一些网站打开出现登录的页面,地址栏大多数不是登录提交表单的u ...
- 利用scrapy模拟登录知乎
闲来无事,写一个模拟登录知乎的小demo. 分析网页发现:登录需要的手机号,密码,_xsrf参数,验证码 实现思路: 1.获取验证码 2.获取_xsrf 参数 3.携带参数,请求登录 验证码url : ...
- python爬虫之scrapy模拟登录
背景: 初来乍到的pythoner,刚开始的时候觉得所有的网站无非就是分析HTML.json数据,但是忽略了很多的一个问题,有很多的网站为了反爬虫,除了需要高可用代理IP地址池外,还需要登录.例如知乎 ...
- scrapy爬虫系列之六--模拟登录
功能点:如何发送携带cookie访问登录后的页面,如何发送post请求登录 爬取网站:bilibili.github 完整代码:https://files.cnblogs.com/files/book ...
随机推荐
- Python——设计模式——单例模式
一个类始终只有一个实例 当你第一次实例化这个类的时候,就创建一个实例化得对象 当你之后再来实例化的时候,就用之前创建的对象 class A: __instance = False def __ini_ ...
- Lodop打印控件在页面如何使用
Lodop打印控件部署到web服务器简单,在页面的使用方法也简单,是非常容易和方便使用的打印控件.客户端本地打印角色(即用户访问网站后 用自己链接的打印机进行客户端本地打印),步骤很少,部署简单:Lo ...
- Linux磁盘空间被未知资源耗尽
在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%, ...
- python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法
http://www.cnblogs.com/wangyongsong/p/6750454.html#_label0
- 【XSY2849】陈姚班 平面图网络流 最短路 DP
题目描述 有一个\(n\)行\(m\)列的网格图. \(S\)到第一行的每一个点都有一条单向边,容量为\(\infty\). 最后一行的每个点到\(T\)都有一条单向边,容量为\(\infty\). ...
- magento2 - Invalid credentials for 'https://repo.magento.com/packages.json', aborting.
错误如下: 登陆:https://developer.magento.com/找到路径-创建公钥与私钥: Developer Portal -> My Access Keys -> Cre ...
- 51nod 1318 最大公约数与最小公倍数方程组(2-SAT)
题意 给你 \(n\) 个元素,\(m\) 个方程. 每个方程形如 \[ \begin{align} \gcd(x_i, y_i)=c_i\\ \mathrm{lcm}(x_i,y_i) = d_i ...
- H5下拉刷新和上拉加载实现原理浅析
前言 在移动端H5网页中,下拉刷新和上拉加载更多数据的交互方式出现频率很高,开源社区也有很多类似的解决方案,如iscroll,pulltorefresh.js库等.下面是对这两种常见交互基本实现原理的 ...
- Math & Number Theory
数学 数论: 莫比乌斯反演 矩阵游戏 小学数学,欧拉定理 组合: 线性代数: 高斯消元 其他: 一些题目
- pytest 12 函数传参和fixture传参数request
前沿: 有的case,需要依赖于某些特定的case才可以执行,比如,登陆获取到的cookie,每次都需要带着他,为了确保是同一个用户,必须带着和登陆获取到的同一个cookies. 大部分的用例都会先登 ...