scapy spider.start_requests
1.概念
在spider类中定义的start_urls属性,默认会被start_requests
方法调用,构建最初的请求
start_urls = ['https://github.com/NoobPythoner']
# 这是源代码
def start_requests(self):cls = self.__class__if method_is_overridden(cls, Spider, 'make_requests_from_url'):warnings.warn("Spider.make_requests_from_url method is deprecated; it ""won't be called in future Scrapy releases. Please ""override Spider.start_requests method instead (see %s.%s)." % (cls.__module__, cls.__name__),)for url in self.start_urls:yield self.make_requests_from_url(url)else:for url in self.start_urls:yield Request(url, dont_filter=True)
2.应用:重写start_requests方法
有些时候第一个请求连接需要携带cookie,我们就需要重写start_requests
方法
import scrapy
import reclass Login1Spider(scrapy.Spider):name = 'login1'allowed_domains = ['github.com']start_urls = ['https://github.com/NoobPythoner'] # 这是一个需要登陆以后才能访问的页面def start_requests(self): # 重构start_requests方法# 这个cookies_str是抓包获取的cookies_str = '...' # 抓包获取# 将cookies_str转换为cookies_dictcookies_dict = {i.split('=')[0]:i.split('=')[1] for i in cookies_str.split('; ')}yield scrapy.Request(self.start_urls[0],callback=self.parse,cookies=cookies_dict)def parse(self, response): # 通过正则表达式匹配用户名来验证是否登陆成功# 正则匹配的是github的用户名result_list = re.findall(r'noobpythoner|NoobPythoner', response.body.decode()) print(result_list)pass
其他
模拟登陆应用:
1.cookie过期时间很长,常见于一些不规范的网站
2.能在cookie过期之前把所有的数据拿到
3.配合其他程序使用,比如其使用selenium把登陆之后的cookie获取到保存到本地,scrapy发送请求之前先读取本地cookie
另外:
scrapy中cookie不能够放在headers中,在构造请求的时候有专门的cookies参数,能够接受字典形式的coookie
在setting中设置ROBOTS协议、USER_AGENT
scapy spider.start_requests相关推荐
- scrapy.Spider的属性和方法
scrapy.Spider的属性和方法 属性: name:spider的名称,要求唯一 allowed_domains:允许的域名,限制爬虫的范围 start_urls:初始urls custom_s ...
- Scrapy框架模拟Github网站登陆
1. 以往的模拟登陆的方法 1.1 requests模块是如何实现模拟登陆的? 直接携带cookies请求页面 找url地址,发送post请求存储cookie 1.2 selenium是如何模拟登陆的 ...
- cmd怎么运行http_Scrapy源码剖析(二)Scrapy是如何运行起来的?
阅读本文大约需要 15 分钟.本文章代码较多,如果手机端阅读体验不好,建议先收藏后在 PC 端阅读. 在上篇文章:Scrapy源码剖析(一)架构概览,我们主要从整体上了解了 Scrapy 的架构和数据 ...
- 爬虫学习笔记(七)——Scrapy框架(二):Scrapy shell、选择器
一.Scrapy shell scrapy shell的作用是用于调试,在项目目录下输入scrapy shell start_urls (start_urls:目标url)得到下列信息: scrapy ...
- 三、scrapy爬虫框架——scrapy模拟登陆
scrapy模拟登陆 学习目标: 应用 请求对象cookies参数的使用 了解 start_requests函数的作用 应用 构造并发送post请求 1. 回顾之前的模拟登陆的方法 1.1 reque ...
- Scrapy源码阅读分析_3_核心组件
From:https://blog.csdn.net/weixin_37947156/article/details/74481758 这篇这要是关于核心组件,讲解这些核心组件初始化都做了哪些工作.包 ...
- Scrapy源码阅读分析_2_启动流程
From:https://blog.csdn.net/weixin_37947156/article/details/74436333 使用 PyCharm 打开下载好的 Scrapy 源码(gith ...
- dubbo源码深度解析_scrapy框架通用爬虫、深度爬虫、分布式爬虫、分布式深度爬虫,源码解析及应用
scrapy框架是爬虫界最为强大的框架,没有之一,它的强大在于它的高可扩展性和低耦合,使使用者能够轻松的实现更改和补充. 其中内置三种爬虫主程序模板,scrapy.Spider.RedisSpider ...
- Selector提取数据1:XPath选择器
1.XPath是什么? XPath即XML路径语言(XML Path Language),它是一种用来确定xml文档中某部分位置的语言.XPath本身遵循w3c标准. xml文档(html属于xml) ...
最新文章
- 小米开源FALSR算法:快速精确轻量级的超分辨率模型
- 中南月赛 1313: ZZY的宠物
- 牛客IOI周赛26-提高组(逆序对,对序列,未曾设想的道路) 题解
- Java SimpleTimeZone inDaylightTime()方法及示例
- 怎样配置mysql数据源_mysql怎样配置ODBC数据源
- 常用技巧 —— 位运算 —— 位运算的应用
- 信息学奥赛C++语言: 奶牛乘法
- import time python_似乎不能在Python的同一脚本中使用import time和import datetime
- hdu 3038 HowManyAnswersAreWrong 并查集
- STN可以增强CNN网络
- abs和pc混在一起怎么解决_PC、ABS常见的7大问题及解决方案
- php支付问题,如何解决php支付错误的问题
- java 怎么获取object的数据_自学java,想将来从事大数据工作,现实吗?怎么学?...
- Sovit3D三维可视化开发工具动画定义新功能
- 【7】PR音频及结合AU去除噪音【8】PR字幕运用
- 网络词汇泛滥:神马都是浮云?
- 前端JavaScript学习网站(重磅推荐)
- BUUCTF:[SWPU2019]Network
- python爬虫图片工具安卓版下载_python爬虫之图片下载APP1.0
- Java session write
热门文章
- Node.js下载安装及各种npm、cnpm、nvm、nrm配置(保姆式教程—提供全套安装包)—nrm的安装与配置(5)
- 学习Python+numpy数组运算和矩阵运算看这254页PPT就够了
- 微课|Python程序设计开发宝典(5.1.2节):修饰器
- Python+django建站入门篇(2):素数判断
- linux c++ 函数效率,C++高精度性能测试函数
- Spring 基础 用mock对Controller执行测试(系列号4)
- python 输入列表 返回每个元素出现的次数
- 1 1 2 3 5 8 java_1 1 2 3 5 8 13 21 34规律:一个数据等于前两个数之和.用java做,输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值....
- delphi中webbrowse控件中模拟点击文本超链接_功能测试——控件测试
- 452. 用最少数量的箭引爆气球(JavaScript)