Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。 也就是说我们对网页的解析需要在Spider类中定义。


Spider类的爬取方式:

①spider中初始的request是通过调用 start_requests() 来获取的。 start_requests() 读取 start_urls 中的URL, 并以 parse 为回调函数生成 Request。

②在回调函数内分析返回的(网页)内容,返回 Item 对象或者 Request 或者一个包括二者的可迭代容器。 返回的Request对象之后会经过Scrapy处理,下载相应的内容,并调用设置的callback函数(函数可相同)。


接下来要完成的是对猫眼电影TOP100的电影进行翻页提取电影名+相对地址

1.更改one_spider.py文件

class SamSpider(scrapy.Spider):name = "sam"start_urls = ["https://maoyan.com/board/4"]url = 'https://maoyan.com/board/4'def parse(self, response):print('>'*50,'获取数据')for sel in response.xpath('//*[@id="app"]/div/div/div/dl/dd'):item = SamzhuItem()item['name'] = sel.xpath('div/div/div[1]/p[1]/a/@title').extract()item['url'] = sel.xpath('div/div/div[1]/p[1]/a/@href').extract()print(item)print('>'*50,'获取下一页请求')a=response.css('.list-pager li:last-child a::attr(href)').extract()[0]  #选择到‘下一页’的按钮if re.search(r'offset',a,re.M|re.I)!=None:print('换页成功')yield scrapy.Request(self.url+a, callback=self.parse)   #返回一个requset,设置callback函数为parseprint('+'*50)else:print('到达终点')

2.运行结果:

可以发现每次获取完一页数据后,都会DEBUG输出一条信息,代表我们发起了一个新的请求,可以看到请求的网址就是我们下一页的网址,因为我们下一页的回调函数也是本身,所以便构成了迭代效果。


小结:

上面采用了内置的scrapy.Spider,除了这个,还有CrawlSpider。

从这里开始已经可以开始感受到Scrapy的一些魅力了,能够使自己把更多的时间精力放在具体的爬虫工作上,而非逻辑搭建。

scrapy框架学习(三)Spiders相关推荐

  1. Scrapy框架学习(四)----CrawlSpider、LinkExtractors、Rule及爬虫示例

    Scrapy框架学习(四)--CrawlSpider.LinkExtractors.Rule及爬虫示例 CrawlSpider.LinkExtractors.Rule是scrapy框架中的类,其中Cr ...

  2. PyTorch框架学习三——张量操作

    PyTorch框架学习三--张量操作 一.拼接 1.torch.cat() 2.torch.stack() 二.切分 1.torch.chunk() 2.torch.split() 三.索引 1.to ...

  3. Scrapy框架学习笔记 - 爬取腾讯招聘网数据

    文章目录 一.Scrapy框架概述 (一)网络爬虫 (二)Scrapy框架 (三)安装Scrapy框架 (四)Scrapy核心组件 (五)Scrapy工作流程 二. Scrapy案例演示 (一)爬取目 ...

  4. scrapy框架(三)

    scrapy框架(三) 一.CrawlSpider 二.案例实践 三.CrawlSpider页面去重 四.scrapy去重机制

  5. 爬虫学习笔记(八)—— Scrapy框架(三):CrawSpider模板

    CrawlSpider 创建CrawlSpider 的爬虫文件 命令: scrapy genspider -t crawl 爬虫文件名 域名 Rule 功能:Rule用来定义CrawlSpider的爬 ...

  6. Scrapy框架学习记录

    随着Python爬虫学习的深入,开始接触Scrapy框架 记录下两个参考教程: 官网教程:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutor ...

  7. scrapy框架学习

    文章目录 一.IP代理池(比较简陋,后续更新) 验证ip,proxies用的是两个协议,http和https都要有 二.python爬虫之scrapy框架 **先贴一张图** 并来一个牛逼的连接[Sc ...

  8. 爬虫Scrapy框架学习(五)-东莞阳光热线问政平台爬取案例

    本案例通过典型的scrapy框架Spider类展现了一个模板式的爬虫过程,请读者细细体会,此案例为必会项目,按照本博客配置,完美通过.本文还对item做了限制,编写item文件的主要作用是防止爬取数据 ...

  9. scrapy框架学习记录(2)

    更新一下上次的内容: Scrapy Engine(引擎):Scrapy框架的核心部分.负责在Spider和ItemPipeline.Downloader.Scheduler中间通信.传递数据等. Sp ...

  10. Scrapy框架学习(1)

    Scrapy框架官方网址:http://doc.scrapy.org/en/latest 安装 Windows 安装方式 • Python 2 / 3 • 升级pip版本:pip install –u ...

最新文章

  1. activemenu怎么拼 vue_vue-element-admin登录逻辑,以及动态添加路由,显示侧边栏
  2. apscheduler mysql_APScheduler (重点)
  3. 如何做机器学习项目规划?一个事半功倍的checklist
  4. PDF编辑器哪个好,如何在PDF中插入图片背景
  5. 从民办三本到知名企业感知算法工程师
  6. java 类编译_Java类编译、加载、和执行机制
  7. 一阶电路中的时间常数_你知道RC电路和RL电路中时间常数的来源么?
  8. 常用SQL语句(1)
  9. matlab3阶幺矩阵,Matlab操作矩阵的相关方法
  10. 吉木萨尔县文化旅游策划案——天山圣地,武侠之都!
  11. qq邮箱下载附件时文件名显示为乱码怎么办。
  12. 职称计算机初级应知应会书,职称计算机考试用书
  13. 高德路径规划预估打车价格
  14. 苹果开放降级_为什么不开放 iOS 降级验证通道?
  15. 在oracle数据库中存储数据库的文件是,Oracle数据库,oracle
  16. None和nan、NaN、NAN
  17. python常见的数据类型形式化定义_详解:规整数据(Tidy Data)的理论与Python实践
  18. 浅谈游戏数据分析------留存篇一---留存折损
  19. 一个列子演示java中软引用的回收时机
  20. CSR8675的DSP学习笔记——a2dp_sink工程的matlab仿真

热门文章

  1. 计算机维护系统管理毕业设计,计算机系统维护-毕业论文.doc
  2. 福建地区市场份额最大的调查研究咨询公司
  3. matlab 跳步循环,足球训练:每天10分钟挑战7天球感训练
  4. 蓝桥杯--算法提高 字符串跳步(java)
  5. 命令行测速工具 linux,Linux命令行下常用的网络测速工具
  6. 区块链人才急聘:一大波高薪职位等你来
  7. 【Rust 笔记】08-枚举与模式
  8. android-长度单位-解析
  9. 软件测试-面试题(基础+性能)
  10. Black Hat USA 2011: Alexander Polyakov - CTO - ERPScan