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相关推荐

  1. scrapy.Spider的属性和方法

    scrapy.Spider的属性和方法 属性: name:spider的名称,要求唯一 allowed_domains:允许的域名,限制爬虫的范围 start_urls:初始urls custom_s ...

  2. Scrapy框架模拟Github网站登陆

    1. 以往的模拟登陆的方法 1.1 requests模块是如何实现模拟登陆的? 直接携带cookies请求页面 找url地址,发送post请求存储cookie 1.2 selenium是如何模拟登陆的 ...

  3. cmd怎么运行http_Scrapy源码剖析(二)Scrapy是如何运行起来的?

    阅读本文大约需要 15 分钟.本文章代码较多,如果手机端阅读体验不好,建议先收藏后在 PC 端阅读. 在上篇文章:Scrapy源码剖析(一)架构概览,我们主要从整体上了解了 Scrapy 的架构和数据 ...

  4. 爬虫学习笔记(七)——Scrapy框架(二):Scrapy shell、选择器

    一.Scrapy shell scrapy shell的作用是用于调试,在项目目录下输入scrapy shell start_urls (start_urls:目标url)得到下列信息: scrapy ...

  5. 三、scrapy爬虫框架——scrapy模拟登陆

    scrapy模拟登陆 学习目标: 应用 请求对象cookies参数的使用 了解 start_requests函数的作用 应用 构造并发送post请求 1. 回顾之前的模拟登陆的方法 1.1 reque ...

  6. Scrapy源码阅读分析_3_核心组件

    From:https://blog.csdn.net/weixin_37947156/article/details/74481758 这篇这要是关于核心组件,讲解这些核心组件初始化都做了哪些工作.包 ...

  7. Scrapy源码阅读分析_2_启动流程

    From:https://blog.csdn.net/weixin_37947156/article/details/74436333 使用 PyCharm 打开下载好的 Scrapy 源码(gith ...

  8. dubbo源码深度解析_scrapy框架通用爬虫、深度爬虫、分布式爬虫、分布式深度爬虫,源码解析及应用

    scrapy框架是爬虫界最为强大的框架,没有之一,它的强大在于它的高可扩展性和低耦合,使使用者能够轻松的实现更改和补充. 其中内置三种爬虫主程序模板,scrapy.Spider.RedisSpider ...

  9. Selector提取数据1:XPath选择器

    1.XPath是什么? XPath即XML路径语言(XML Path Language),它是一种用来确定xml文档中某部分位置的语言.XPath本身遵循w3c标准. xml文档(html属于xml) ...

最新文章

  1. 小米开源FALSR算法:快速精确轻量级的超分辨率模型
  2. 中南月赛 1313: ZZY的宠物
  3. 牛客IOI周赛26-提高组(逆序对,对序列,未曾设想的道路) 题解
  4. Java SimpleTimeZone inDaylightTime()方法及示例
  5. 怎样配置mysql数据源_mysql怎样配置ODBC数据源
  6. 常用技巧 —— 位运算 —— 位运算的应用
  7. 信息学奥赛C++语言: 奶牛乘法
  8. import time python_似乎不能在Python的同一脚本中使用import time和import datetime
  9. hdu 3038 HowManyAnswersAreWrong 并查集
  10. STN可以增强CNN网络
  11. abs和pc混在一起怎么解决_PC、ABS常见的7大问题及解决方案
  12. php支付问题,如何解决php支付错误的问题
  13. java 怎么获取object的数据_自学java,想将来从事大数据工作,现实吗?怎么学?...
  14. Sovit3D三维可视化开发工具动画定义新功能
  15. 【7】PR音频及结合AU去除噪音【8】PR字幕运用
  16. 网络词汇泛滥:神马都是浮云?
  17. 前端JavaScript学习网站(重磅推荐)
  18. BUUCTF:[SWPU2019]Network
  19. python爬虫图片工具安卓版下载_python爬虫之图片下载APP1.0
  20. Java session write

热门文章

  1. Node.js下载安装及各种npm、cnpm、nvm、nrm配置(保姆式教程—提供全套安装包)—nrm的安装与配置(5)
  2. 学习Python+numpy数组运算和矩阵运算看这254页PPT就够了
  3. 微课|Python程序设计开发宝典(5.1.2节):修饰器
  4. Python+django建站入门篇(2):素数判断
  5. linux c++ 函数效率,C++高精度性能测试函数
  6. Spring 基础 用mock对Controller执行测试(系列号4)
  7. python 输入列表 返回每个元素出现的次数
  8. 1 1 2 3 5 8 java_1 1 2 3 5 8 13 21 34规律:一个数据等于前两个数之和.用java做,输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值....
  9. delphi中webbrowse控件中模拟点击文本超链接_功能测试——控件测试
  10. 452. 用最少数量的箭引爆气球(JavaScript)